flutter - 当我使用计时器时,FutureBuilder 不工作
问题描述
这是我的两种不同的方法。getCommunitiesList 方法正在工作,它将显示circleProgressBar
然后结果。该功能getCommunitiesList_old
不起作用,它仍然只显示circleProgressBar
,我知道问题不在FutureBuilder
. 问题出在这个函数内部。有人可以帮我确定问题吗?
Future<List<CommunitieModel>> getCommunitiesList()async{
List<CommunitieModel> data=List();
for(int i=1;i<30;i++) {
data.add(CommunitieModel());//title:"Hi Temple $i",details: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when ...",imageUrl: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQufRouQz5g0chR_vkUnDPbYpYdorS5FtT6N9asmkp-MqhDscJ-&s"));
}
return data;
}
Future<List<CommunitieModel>> getCommunitiesList_old()async{
await Timer(Duration(seconds: 5),(){
List<CommunitieModel> data=List();
for(int i=1;i<30;i++) {
data.add(CommunitieModel());//title:"Hi Temple $i",details: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when ...",imageUrl: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQufRouQz5g0chR_vkUnDPbYpYdorS5FtT6N9asmkp-MqhDscJ-&s"));
}
return data;
});//.tick;
}
此代码有效并由 Crazy Lazy Cat 提供
Future<List<CommunitieModel>> getCommunitiesList_old() async {
await Future.delayed(const Duration(seconds: 5));
List<CommunitieModel> data = List();
for (int i = 1; i < 30; i++) {
data.add(
CommunitieModel()); //title:"Hi Temple $i",details: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when ...",imageUrl: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQufRouQz5g0chR_vkUnDPbYpYdorS5FtT6N9asmkp-MqhDscJ-&s"));
}
return data;
}
我还有一个疑问
为什么这段代码不起作用
Future<List<SimpleCardModel>> getTempleList()async{
await Future.delayed(const Duration(seconds: 1),(){
List<SimpleCardModel> data = List();
for (int i = 11; i < 44; i++) {
data.add(SimpleCardModel(title: "Hi Temple $i",
details: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when ...",
imageUrl: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQufRouQz5g0chR_vkUnDPbYpYdorS5FtT6N9asmkp-MqhDscJ-&s"));
}
return data;
});
}
解决方案
尝试使用Future.delayed
Future<List<CommunitieModel>> getCommunitiesList_old() async {
await Future.delayed(const Duration(seconds: 5));
List<CommunitieModel> data = List();
for (int i = 1; i < 30; i++) {
data.add(
CommunitieModel()); //title:"Hi Temple $i",details: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when ...",imageUrl: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQufRouQz5g0chR_vkUnDPbYpYdorS5FtT6N9asmkp-MqhDscJ-&s"));
}
return data;
}