[flutter]监听系统主题改变

/ 7评论 / 426阅读 / 0点赞

项目需要跟随系统主题变化,修改一些自定义组件的样式,但百度一直没找到可以监听系统主题变化的方法,而 MaterialApp 是有一个设置ThemeMode.system,使得app可以跟随系统主题变化而切换使用传入的theme和darkTheme,因此我就去看了看里面的源码,找到了监听系统主题变化的函数绑定方法。

解决

import 'dart:ui' as ui;
    ui.PlatformDispatcher.instance.onPlatformBrightnessChanged = () {
      // 设置跟随系统主题变化
      followingSystem();
    };
ui.PlatformDispatcher.instance.onPlatformBrightnessChanged = null;
if(null == ui.PlatformDispatcher.instance.onPlatformBrightnessChanged) {
    // 当前没有在监听
} else {
    // 有在监听
}
    ui.PlatformDispatcher.instance.onPlatformBrightnessChanged = () {
       fun1();
       fun2();
       fun3();
       fun4();
       ......
    };
if(ui.PlatformDispatcher.instance.platformBrightness == Brightness.dark) {
    // 系统已经转变为夜间模式
    // app跟随修改主题为夜间
} else {
    // 系统已经转变为白天模式
    // app跟随修改主题为白天
}
// 进入app时手动调用一次 followingSystem(), 然后调用 setFollowingSystem() 绑定监听函数

  void followingSystem() {
    if (ui.PlatformDispatcher.instance.platformBrightness == Brightness.dark) {
      // app跟随修改主题为夜间
    } else {
      // app跟随修改主题为白天
    }
  }

  // 设置跟随系统主题变化
  void setFollowingSystem() {
    ui.PlatformDispatcher.instance.onPlatformBrightnessChanged = () {
      followingSystem();
    };
  }
  1. escanty说道:

    Primary SjГ¶gren syndrome clinical and immunologic disease patterns in a cohort of 400 patients generic levitra canada pharmacy 36 Recruitment maneuvers attempt to increase the amount of aerated lung tissue to improve gas exchange

  2. embeway说道:

    The microarray data indicated that both PDGFRО± and PDGFRОІ were upregulated in the IGF IR independent, recurrent tumors compared to the IGF IR dependent, primary tumors 14 buying cialis online forum

  3. The very next time I read a blog, I hope that it doesnt disappoint me just as much as this one. After all, I know it was my choice to read, however I truly believed you would have something interesting to talk about. All I hear is a bunch of crying about something you can fix if you werent too busy seeking attention.

  4. Coikemn说道:

    Of can caffeine lower blood sugar course, there are basically all newly ascended monks buy generic cialis online safely Can we take ovasitol while being on birth control

  5. 猫可以多久不吃东西?

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注