Что я пытаюсь сделать
То, что я пытаюсь сделать, - это извлекать данные из вызова API и передавать данные в ответ на виджет GridView.count()
каждый минуту, потому что данные могут измениться.
Я сделал это с помощью виджета FutureBuilder
и функциональности Cron
из cron / cron.dart , если это поможет.
Вот код:
FutureBuilder<dynamic>(
future: Api.getFoods(),
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
List<Widget> slots = [];
if (snapshot.data == null) {
return Text('');
}
var data = snapshot.data;
cron.schedule(new Schedule.parse('*/1 * * * *'), () async {
setState(() {
data = snapshot.data;
});
slots = [];
});
for (int i = 0; i < snapshot.data.length; i++) {
slots.add(new FoodSlot(
snapshot.data[i]['name'],
snapshot.data[i]['created_at'],
snapshot.data[i]['qty'].toString()
));
}
return new GridView.count(
crossAxisCount: 2,
scrollDirection: Axis.vertical,
children: slots
);
})
Виджет FoodSlot
создает Card
и отображает значение, переданное в аргументах на карточке.
Что я пробовал
После отладки я увидел, что работа cron работает нормально, но виджеты GridView
просто не обновляются.
Я попытался использовать виджет Text
вместо GridView
и возвращает значения, возвращаемые вызовом API, и виджет обновляется автоматически каждую 1 минуту, как и ожидалось.
Почему GridView.count()
действует так и как я могу это исправить?
ОБНОВЛЕНИЕ
Когда внесены изменения в базу данных, GridView обновляется, но только когда приложение перезапускается (используя R, а не r).