Как я могу прослушать изменения в платформе Brightness во Flutter? - PullRequest
0 голосов
/ 06 октября 2019

Я настраиваю систему, в которой когда пользователь меняет системную тему на темный режим, он меняет тему, а с Flutter все работает хорошо! Однако, когда пользователь меняет системную тему, системная навигация и строка состояния не изменяют свои цвета. У меня есть код, работающий на домашней странице внутри метода сборки, но, похоже, он этого не делает. Вот код внутри метода построения домашней страницы:

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    Brightness sysBrightness = MediaQuery.of(context).platformBrightness;
    if (sysBrightness == Brightness.dark)
      Themes.setDarkSystemColors();
    else
      Themes.setLightSystemColors();

    return Scaffold(
      appBar: CustomAppBar(title: "Home"),
      drawer: CustomDrawer(),
      body: SizedBox(),
    );
  }
}

Вот код в основном приложении с theme: и darkTheme::

    return MaterialApp(
      initialRoute: '/',
      routes: routes,
      navigatorObservers: [_routeObserver],
      theme: Themes.lightTheme,
      darkTheme: Themes.darkTheme,
      debugShowCheckedModeBanner: false,
      title: 'School Life',
    );

1 Ответ

0 голосов
/ 07 октября 2019

Перечисление ThemeMode (начиная с версии 1.9 Flutter, я думаю). Таким образом, вы можете установить theme для светлых и darkTheme для темных и themeMode (ThemeMode.system (по умолчанию), ThemeMode.light, ThemeMode.dark) определяет, какая тема будет использоваться.

MaterialApp(
  theme: ThemeData.light(),
  darkTheme: ThemeData.dark(),
  themeMode: ThemeMode.system,
)

Тем не менее, я не уверен, есть ли способ прослушивания изменений платформы яркости (ThemeMode также использует платформу яркости под капотом). Вам нужно будет восстановить MaterialApp ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...