Итак, у меня есть этот класс, пытающийся использовать ChangeNotifierProvider:
class IdsList with ChangeNotifier {
List<String> _ids = [];
get ids {
return _ids;
}
set addListIds(List<String> ids) {
this._ids = ids;
notifyListeners();
}
set addId(String id) {
if (!_ids.contains(id)) {
this._ids.add(id);
}
notifyListeners();
}
void addIdFunc(String id) {
if (!_ids.contains(id)) {
this._ids.add(id);
print('IDS FROM CLASS ${this._ids}');
}
notifyListeners();
}
}
Затем есть функция, которая прослушивает базу данных Firestore, и при получении данных мне нужно создать список идентификаторов и использовать их с провайдером. , Проблема заключается в том, что функция не находится в методе сборки Widget (контекст BuildContext), я могу использовать его для установки идентификаторов, таких как:
final idsProvider = Provider.of<IdsList>(context);
, а затем использовать что-то вроде onPressed(){idsProvider.addId}
Поэтому в методе, который я слушаю для данных, я пытаюсь использовать idsList.addIdFunc(id);
, где idsList является экземпляром класса. Метод работает, и я могу напечатать список идентификаторов из класса, но затем, когда я пытаюсь получить их с помощью:
@override
Widget build(BuildContext context) {
final idsProvider = Provider.of<IdsList>(context);
return ListView.builder(
itemCount: cartas.length,
itemBuilder: (context, i) {
print('idsdsss ${idsProvider.ids}');
Carta _carta = cartas[i];
return ListTile(title: Text(_carta.name, style: titleList(),),);
});
}
... список пуст.
Может кто-нибудь помочь мне с этим?