【发布时间】:2022-11-02 21:23:43
【问题描述】:
标签: flutter calendar flutter-layout flutter-dependencies
标签: flutter calendar flutter-layout flutter-dependencies
由于initState 不是async,您通常不会向其中添加异步执行的代码(如fetch 的数据)。相反,我建议使用FutureBuilder(或StreamBuilder.periodic,如果您想继续定期获取数据)。
说你有这个功能
Future<List<Event>> fetchEvents() async {
...
return events;
}
它从您的本地或在线数据库中获取事件并将它们作为列表返回。然后,您可以将您的小部件包装在 FutureBuilder 中:
FutureBuilder<List<Event>>(
future: fetchEvents,
builder: (BuildContext context, AsyncSnapshot<List<Event>> snapshot) {
List<Event> events = snapshot.data ?? [];
return MyAwesomeCalendarWidget(events: events);
}
);
这样,Widget 将首先使用空的List(尚未获取事件)构建,向您显示一个空日历,一旦获取数据,它将相应地重建。在这种情况下,您将不再需要使用 StatefulWidget。
【讨论】:
eventLoader: (day) {
for (var i = 0; i < listtasks.length; i++) {
if (day == listtasks[i].date) {
return [listtasks[i]];
}
}
return [];
},
【讨论】: