无法使用提供程序获取和设置列表

时间:2020-04-04 15:57:15

标签: flutter dart flutter-provider

所以我很努力地使用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数据库的函数,并且在获取数据时,我需要创建ID列表并与Provider一起使用。问题是因为该函数不在Widget build(BuildContext context)方法中,因此我可以使用它来设置ID,例如:

final idsProvider = Provider.of<IdsList>(context);

,然后使用类似onPressed(){idsProvider.addId}

因此,在该方法中,我尝试使用idsList.addIdFunc(id);监听数据,其中idsList是该类的实例。该方法有效,我可以从类中打印id列表,但是当我尝试通过以下方法获取它们时:

@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(),),);
        });
  }

...列表为空。

有人可以帮我吗?

0 个答案:

没有答案