首页 > 解决方案 > ChangeNotifier 不监听值变化

问题描述

我想在值从 null 更改为数字时通知包装器,但包装器似乎没有收到更改。在下面检查我的代码:

class setID with ChangeNotifier{
String studyID;

void setStudyID(String study){
  studyID = study;
  notifyListeners();
  }
}

在 main.dart 中,

return MultiProvider(
  providers: [
    ChangeNotifierProvider(create: (_) => setID()),
    // others providers here
    ],
  child: MaterialApp(
      home: Wrapper(),
    ),

在 wrapper.dart 中,

final studyID = Provider.of<setID>(context).studyID;

当 setID 类中的值发生更改时,包装器中不会收到任何值。谁能帮帮我?先感谢您。

标签: flutterflutter-providerflutter-change-notifier

解决方案


只需将代码从

providers: [
    ChangeNotifierProvider(create: (_) => setID()),
    // others providers here
    ],

至,

providers: [
    ChangeNotifierProvider<setID>(create: (_) => setID()),
    // others providers here
    ],

并在包装器中获取提供者侦听器为

final studyID = Provider.of<setID>(context);

这里的问题是 ChangeNotifierProvider 不知道要监视哪个变量/类对象。它应该可以解决问题。有关更多信息,请阅读Providers的官方文档


推荐阅读