Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android studio 未调用ChangeNotifierProvider_Android Studio_Flutter_Dart_Listener_Provider - Fatal编程技术网

Android studio 未调用ChangeNotifierProvider

Android studio 未调用ChangeNotifierProvider,android-studio,flutter,dart,listener,provider,Android Studio,Flutter,Dart,Listener,Provider,未调用我的ChangeNotifierProvider @override Widget build(BuildContext context) { return ChangeNotifierProvider<MyGlobals>( builder: (context) => MyGlobals(), child: MaterialApp( theme: MyGlobals().GetTheme() == "

未调用我的ChangeNotifierProvider


  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider<MyGlobals>(
        builder: (context) => MyGlobals(),
        child: MaterialApp(
          theme: MyGlobals().GetTheme() == "dark" ? ThemeData(fontFamily: 'ERAS', primaryColor: Colors.black, accentColor: Colors.amberAccent, secondaryHeaderColor: Colors.black54):
          ThemeData(fontFamily: 'ERAS', primaryColor: Colors.white, accentColor: Colors.black, secondaryHeaderColor: Colors.white70),
          home: MyHomePage(),
        ));
  }
}

我没有收到任何错误,只是没有被呼叫。我正在从另一个.dart文件调用setTheme,但没有调用它的changenotifierprovider。MyGlobals是一个独立于上述ChangeNotifierProvider代码的.dart文件。

您需要一个
消费者
小部件来监听您在
模型
中所做的更改,如下所示:

  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider<MyGlobals>(
      builder: (context) => MyGlobals(),
      child: Consumer<MyGlobals>(
        builder: (_, model, __) {
          return MaterialApp(
            theme: model.getTheme() == "dark"
                ? ThemeData(
                    fontFamily: 'ERAS',
                    primaryColor: Colors.black,
                    accentColor: Colors.amberAccent,
                    secondaryHeaderColor: Colors.black54)
                : ThemeData(
                    fontFamily: 'ERAS',
                    primaryColor: Colors.white,
                    accentColor: Colors.black,
                    secondaryHeaderColor: Colors.white70),
            home: MyHomePage(),
          );
        },
      ),
    );
  }
@覆盖
小部件构建(构建上下文){
返回ChangeNotifierProvider(
生成器:(上下文)=>MyGlobals(),
儿童:消费者(
建筑商:(uu,模型,uu){
返回材料PP(
主题:model.getTheme()=“黑暗”
?主题数据(
fontFamily:“年代”,
原色:颜色。黑色,
accentColor:Colors.amberAccent,
二级标题颜色:颜色。黑色54)
:主题数据(
fontFamily:“年代”,
原色:颜色。白色,
颜色:颜色。黑色,
第二种颜色:颜色。白色70),
主页:MyHomePage(),
);
},
),
);
}
然后,您可以通过以下方式更新主题:

Provider.of<MyGlobals>(context).setTheme("your_theme")
Provider.of(context.setTheme)(“您的主题”)

您需要一个消费者来监听您指定的更改扫描?我的意思是,您在哪里调用
setTheme
方法?能否将MyHomePage widgetNo添加到位于不同.dart文件中的MyGlobals类中。我也希望保持这种状态。你打电话给
setTheme
?对不起,他还没工作。当我调用setTheme时,它只是没有被调用。在你的问题中调用setTheme时添加代码,我会更新我的答案,我确信你正在创建一个新的对象来完成它!我还需要那个消费者吗?为什么我同时需要changenotifierprovider和consumer。该消费者做什么?我建议您阅读官方文档:,提供商有两个主要操作“公开”和“读取”值,使用ChangeNotifier Provider您正在公开您的
MyGlobals
,现在每次更改/更新模型时,您都可以使用
consumer
收听更改。当然,欢迎您,你可以在twitter上关注我:)相同的别名
Provider.of<MyGlobals>(context).setTheme("your_theme")