flutter MobX изменить тему при изменении магазина

Я работаю над простым приложением flutter, которое использует MobX в качестве менеджера состояний. это приложение имеет 2 основные темы:

  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изменяется пользователем все обновление темы приложения и реагирует, но оно изменяется только при первом рендеринге приложения и не обновляет его самостоятельно при изменении магазина.
Есть идеи?

1 ответ

Вы должны использовать виджет Observer из библиотеки mobx на MaterialApp виджет и changeThemeModeFunction будет запускать @action функция в классе AppStore

Больше информации в документации

Другие вопросы по тегам