Flutter: Как изменить тему во время выполнения? - PullRequest
0 голосов
/ 13 июля 2020

У меня есть 3 темы, основанные на цветах, такие как красная тема, синяя тема и темная тема. Я хочу изменить тему приложения во время его работы.

Я хочу показать диалоговое окно с предупреждением, в котором пользователь может выбрать цвет темы.

1 Ответ

0 голосов
/ 13 июля 2020

Когда вы представляете AlertDialog (используя await showDialog()), возвращается Future<dynamic> значение. Итак, в диалоговом окне есть несколько кнопок, которые позволяют пользователю выбирать свою тему. Как только пользователь выберет тему, верните выбранную тему, используя Navigator.of(context).pop(selectedTheme).

Дождитесь этого значения везде, где вы показываете диалоговое окно, например final userSelectedTheme = await showDialog(...). Получив новое значение, обновите любую модель состояния, в которой находится тема, и ваше приложение должно обновиться соответствующим образом.

Поскольку темы обычно находятся на верхнем уровне приложения, вам, вероятно, понадобится нечто большее, чем просто виджеты с отслеживанием состояния, если вы больше ничего не используете. Я бы посмотрел на Provider, если вы ни с чем не знакомы:

https://pub.dev/packages/provider

...