有一个项目列表,我想将它们添加到收藏夹中,并在另一个页面中显示收藏夹项目。
项目列表.dart
onPressed: () {
Provider.of<MyAppProvider>(context, listen: false).addItems(items);},
我的供应商.dart
class MyAppProvider extends ChangeNotifier {
List<items> selectedItems = [];
void addItems(Items items) {
selectedItems.add(items);
notifyListeners();
}
List<Items> getSelectedItems() {
return selectedItems;
}
}
收藏夹.dart
Class favorites extends StatelessWidget {
const favorites({super.key});
@override
Widget build(BuildContext context) {
List<Items> favoriteList = Provider.of<MyAppProvider>(context, listen:false).getSelectedItems();
print(favoriteList);
}}
当我尝试打印favoriteList时,它返回[] null。当我刷新并转到Favorites页面时会发生这种情况
1条答案
按热度按时间plicqrtu1#
您希望在提供程序中更改数据时重新构建侦听器,正如@Ivo指出的,您在文件中使用了两个不同的提供程序。
收藏夹。dart应如下所示:
通过写入
listen: false
,您向小部件指示它不应该在更改时重建或订阅提供程序,回调函数中经常出现这种情况,但显示该数据并希望保持最新的小部件中则不是这样。