所以我很努力地使用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(),),);
});
}
...列表为空。
有人可以帮我吗?