Flutter Provider框架下自定义ChangeNotifier子类数据无法更新的问题咨询
问题分析与解决
咱们来一步步拆解你代码里的几个细节问题,正是这些小疏漏导致username始终返回null:
变量名大小写不匹配
你在类里定义的成员变量是String? username;(name全小写),但在upd方法里赋值的却是userName = str;(Name首字母大写)。这两个是完全独立的变量,相当于你给一个不存在的变量赋了值,原本的username自然还是初始的null。状态通知方法拼写错误
ChangeNotifier里的状态通知方法是notifyListeners()(复数形式,末尾带s),你写成了notifyListener(),这会导致状态更新的通知根本发不出去——就算赋值逻辑对了,依赖这个状态的组件也感知不到变化。类继承语法错误
继承ChangeNotifier时不需要加括号,正确的类定义写法是:class P extends ChangeNotifier { // ... 类成员与方法 }你写的
class P extends ChangeNotifier(){属于语法错误,会影响类的正常初始化逻辑。
修正后的完整代码如下:
class P extends ChangeNotifier { String? username; void upd(String str) { username = str; // 修正变量名 notifyListeners(); // 修正方法名 } }
另外确认一下,你是在MultiProvider的作用域内调用context.read<P>()的——既然你已经完成了Provider注册,这部分应该没问题。
内容的提问来源于stack exchange,提问作者yolo
相关产品推荐
相关产品推荐

