flutter - 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 类中的值发生更改时,包装器中不会收到任何值。谁能帮帮我?先感谢您。
解决方案
只需将代码从
providers: [
ChangeNotifierProvider(create: (_) => setID()),
// others providers here
],
至,
providers: [
ChangeNotifierProvider<setID>(create: (_) => setID()),
// others providers here
],
并在包装器中获取提供者侦听器为
final studyID = Provider.of<setID>(context);
这里的问题是 ChangeNotifierProvider 不知道要监视哪个变量/类对象。它应该可以解决问题。有关更多信息,请阅读Providers的官方文档
推荐阅读
- c - 我在理解指针在 c 中的工作方式时遇到了一些麻烦
- javascript - 用纯 JS 将一个元素替换为另一个元素
- c++ - 如何允许 std::unique_ptr 访问类的私有析构函数或使用私有析构函数实现 C++ 工厂类?
- django - 我可以为特定功能禁用 Django DEBUG 模式以避免生成详细的错误页面吗?
- sql - 连接表并在单行内连接多行
- java - 如何在不需要授权的端点上启用 CORS
- wordpress - 手动更新我的 Wordpress 站点(使用 FTP)后,在我的 wordpress 仪表板上,我仍然得到“WordPress 的更新版本可用”。
- c# - MSBuild - 将来自 editorconfig 的警告视为错误(在构建期间强制执行)
- docker - 如何用很少的端口构建 dockerfile
- node.js - 错误:传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符串,同时使用自己生成的 id 插入