【发布时间】:2021-10-23 17:08:15
【问题描述】:
我的提供程序文件中有一个这样的方法来更新来自服务器的项目列表:
Future<void> getServerMeals(String userName, String date) async {
final QueryBuilder<ParseObject> parseQuery =
QueryBuilder<ParseObject>(ParseObject('UsersEaten'));
parseQuery
..whereContains('eatenBy', userName)
..whereEqualTo('eatenDate', date);
final ParseResponse apiResponse = await parseQuery.query();
if (apiResponse.success && apiResponse.results != null) {
List<dynamic>? apiRes = apiResponse.results;
List<dynamic> newMeals = apiRes!
.map((e) => EatenItem(
id: e['objectId'],
eatenCal: e['eatenCal'],
eatenTitle: e['eatenTitle'],
eatenImageUrl: e['eatenImg'],
userId: e['objectId'],
))
.toList();
_eatenMeals = newMeals;
print(apiResponse.results);
}
}
在我的主屏幕中,我将该列表包装到 FutureBuilder 中,它可以正常工作并返回一个列表:
Container(
height: MediaQuery.of(context).size.height * 0.6,
margin: EdgeInsets.only(left: 30, right: 30),
child: FutureBuilder(
builder: (ctx, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(),
);
}
return ListView.builder(
itemCount: mealsList.eatenMeals.length,
itemBuilder: (ctx, index) =>
DailyEaten(mealsList.eatenMeals[index]),
);
},
future: Provider.of<EatenMeals>(context)
.getServerMeals(currentUser.username, now),
),
),
但是当我在我的方法中添加 notifylistener() 时,我未来的构建器列表停留在等待状态并且不会更新列表这里出了什么问题
【问题讨论】:
标签: flutter dart flutter-provider flutter-futurebuilder