1

我正在开发一个使用 MobX 作为状态管理器的简单颤振应用程序。这个应用程序有两个主题:

  1. 黑暗模式
  2. 灯光模式

当 MobX 商店状态发生变化时,我希望我的应用程序在运行时在这两个主题之间切换。这是我的 main.dart:

void main() => runApp(MyApp());
final appStore = new AppStore();

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'my app',
      theme: getThemeData(appStore.isDarkMode),
      home: MyHomePage(appStore: appStore),
    );
  }

  getThemeData(bool isDarkMode) {
    if (isDarkMode) {
      return ThemeData(
          brightness: Brightness.dark,
          primarySwatch: Colors.blue,
          fontFamily: 'Sumsung-sharp-sans');
    } else {
      return ThemeData(
          brightness: Brightness.light,
          primarySwatch: Colors.blue,
          fontFamily: 'Sumsung-sharp-sans');
    }
  }
}

我希望appStore.isDarkMode用户何时更改整个应用程序主题更新并做出反应,但它只会在第一次应用程序渲染时更改,并且在商店更改时不会自行更新。
任何想法?

4

1 回答 1

1

您应该使用 mobx 库中的 Observer 小部件到MaterialApp小部件上,changeThemeModeFunction并将触发@actionAppStore 类中的功能

文档中的更多信息

于 2020-05-10T02:39:16.170 回答