Я начал разрабатывать свое первое приложение с флаттером, и у меня есть несколько вопросов.
У меня есть экран, который содержит горизонтальный ListView, где каждый элемент представляет месяц и занимает весь экран. Каждый предмет - это другой список итенов. В основном это список расходов за каждый месяц. Я контролирую состояние с помощью провайдера, и у меня возникают проблемы с обнаружением изменений за месяц. Например, я нахожусь в январе, но я добавил расходы в феврале, поэтому февральский элемент должен обнаружить изменение и переписать. Я не смог сделать это до сих пор. Вот скриншоты приложения:
![enter image description here](https://i.stack.imgur.com/YVCBj.png)
![enter image description here](https://i.stack.imgur.com/qNC2Z.png)
У меня есть провайдер, который имеет массив "периодов". И «Период» - это класс, представляющий месяц и содержащий массив расходов.
Я предполагаю, что я не организую свои данные сразу, я был бы признателен, если бы кто-то мог указать мне на правильное направление.
РЕДАКТИРОВАТЬ:
Итак, я посмотрел это видео здесь: https://www.youtube.com/watch?v=d_m5csmrf7I, и это помогло мне хотя бы немного о том, как обнаружить изменения во вложенных провайдеры. Я в основном сделал это:
Widget build(BuildContext context) {
...
final size = MediaQuery.of(context).size;
final financeiro = Provider.of<Financeiro>(context);
return ImprovedListView.builder(
controller: _listController,
scrollDirection: Axis.horizontal,
itemCount: financeiro.periodos.length,
itemSize: size.width,
physics: const NeverScrollableScrollPhysics(),
initialScrollOffset: financeiro.indexMesAtual * size.width,
itemBuilder: (ctx, index) {
final periodo = financeiro.periodos[index]; //get a piece of the list and pass to another change notifier provider
return ChangeNotifierProvider<Periodo>.value(
value: periodo,
child: PeriodoFinanceiro(
key: ValueKey('${periodo.ano}${periodo.mes}'),
index: index,
scrollTo: scrollTo,
carregarDadosIniciais: carregarDadosIniciais,
excluirLancamento: excluirLancamento,
),
);
};
}
Теперь мне просто нужно выяснить, как лучше контролировать scrolloffset из списка при его повторном рендеринге.
Спасибо