Невозможно получить и установить список с помощью провайдера - PullRequest
0 голосов
/ 04 апреля 2020

Итак, у меня есть этот класс, пытающийся использовать 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(),),);
        });
  }

... список пуст.

Может кто-нибудь помочь мне с этим?

...