flutter MobX изменить тему при изменении магазина
Я работаю над простым приложением flutter, которое использует MobX в качестве менеджера состояний. это приложение имеет 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
Больше информации в документации