You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 20:29:06