У меня есть 2 вара ThemeData и SwitchListTile со следующим кодом:
new SwitchListTile(
value: applyDarkTheme,
title: const Text('Appy dark theme?'),
onChanged: (bool value) {
setState(() {
applyDarkTheme = value;
});
})
applyDarkTheme - это переменная, которую я проверяю только при первом создании приложения:
return new MaterialApp(
title: 'Test Application',
home: new MyHomePage(title: 'Test app'),
theme: settings.applyDarkTheme ? AppThemes.dark : AppThemes.light,
routes: _routes,
);
Как я могу перерисовать приложение с новым ThemeData при изменении состояния переключателя?
Вы можете рассмотреть возможность вложения вашего MaterialApp в StatefulWidget.
Пример приложения Flutter Gallery делает это в своем виджете ГалереяApp.
GalleryTheme _galleryThemeВот измененный фрагмент
class GalleryApp extends StatefulWidget {
@override
GalleryAppState createState() => new GalleryAppState();
}
class GalleryAppState extends State<GalleryApp> {
GalleryTheme _galleryTheme = kAllGalleryThemes[0];
...
@override
Widget build(BuildContext context) {
Widget home = new GalleryHome(
galleryTheme: _galleryTheme,
onThemeChanged: (GalleryTheme value) {
setState(() {
_galleryTheme = value;
});
},
...
);
...
return new MaterialApp(
...
home: home,
);
}
}
Спасибо за это! После долгого редактирования я наконец сделал это.