Flutter中用Provider更新列表后UI不刷新怎么办?
我用Provider管理一个商品列表,调用notifyListeners()之后界面没变化,明明数据已经改了啊!
试过把Consumer包到最外层,也检查了是不是在异步回调里忘了setState,但还是不行。这是我的状态类简化版:
class CartModel extends ChangeNotifier {
List<String> items = ['苹果', '香蕉'];
void addItem(String item) {
items.add(item);
notifyListeners(); // 这里调用了但UI不动
}
}
改下你的addItem方法:
Provider官方文档里有提到这点(虽然藏得比较深),状态更新必须返回新对象而不是修改原对象。这跟React的setState一个道理。
如果还不行,建议检查:
1. 确保整个widget树都被Provider包裹了
2. 确认你用的是ChangeNotifierProvider不是普通的Provider
3. 有时候热重载会抽风,试试完全重启应用
妈的,这种引用问题浪费过我两小时,Flutter的响应式有时候真让人头大。