【发布时间】:2021-09-08 07:21:45
【问题描述】:
我正在尝试每 30 秒获取一次数据,但我不知道该怎么做。我创建的 Getx 控制器文件没有问题。我可以提取数据,但它不刷新。
这是我的控制器:
class AllCoinController extends GetxController {
var coinList = [].obs;
var coinCounter = 0.obs;
Future callAllCoins() async {
try {
final response = await http.get(url);
if (response.statusCode == 200) {
List<dynamic> values = [];
values = allCoinsFromJson(response.body);
coinCounter.value = values.length;
if (values.length > 0) {
for (int i = 0; i < values.length; i++) {
if (values[i] != null) {
coinList.add(values[i]);
}
}
}
return coinList;
} else {
print(response.statusCode);
}
} catch (e) {
print(e.toString());
}
}
@override
void onInit() {
callAllCoins();
Timer.periodic(Duration(seconds: 30), (timer) => callAllCoins());
super.onInit();
}
}
还有我的主页:
class HomePage extends StatelessWidget {
final AllCoinController allCoinController = Get.put(AllCoinController());
@override
Widget build(BuildContext context) {
return Scaffold(
body: Obx(
() => ListView.builder(
scrollDirection: Axis.vertical,
itemCount: allCoinController.coinCounter.value,
itemBuilder: (context, index) {
return Container(
width: 150,
child: Row(
children: [
SizedBox(
width: 50,
height: 50,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Image.network(
allCoinController.coinList[index].image),
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(allCoinController.coinList[index].name),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(allCoinController.coinList[index].symbol),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Obx(
() => Text(allCoinController.coinList[index].currentPrice
.toString()),
),
),
],
),
);
},
),
),
);
}
}
代码没有问题,唯一的问题是计时器不工作。
【问题讨论】:
标签: flutter dart flutter-getx