gpt4 book ai didi

android-studio - ChangeNotifierProvider没有被调用

转载 作者:行者123 更新时间:2023-12-03 03:25:12 25 4
gpt4 key购买 nike

我的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(),
));
}
}

这是MyGlobals:
String _theme = "dark";

class MyGlobals with ChangeNotifier {


getTheme() => _theme;


void setTheme(String _themecolor) {
_theme = _themecolor;
notifyListeners();
}
}

我没有得到任何错误,只是不被调用。我正在从另一个.dart文件调用setTheme,并且未调用它not changenotifierprovider。 MyGlobals是与上面的ChangeNotifierProvider代码分离的.dart文件。

最佳答案

您需要一个Consumer小部件来监听您在Model中所做的更改,如下所示:

  @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(),
);
},
),
);
}

然后,您可以通过以下方式更新主题:
Provider.of<MyGlobals>(context).setTheme("your_theme")

关于android-studio - ChangeNotifierProvider没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58507265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com