项目需要跟随系统主题变化,修改一些自定义组件的样式,但百度一直没找到可以监听系统主题变化的方法,而 MaterialApp 是有一个设置ThemeMode.system,使得app可以跟随系统主题变化而切换使用传入的theme和darkTheme,因此我就去看了看里面的源码,找到了监听系统主题变化的函数绑定方法。
解决
- 首先需要import标准库,flutter自带的,不需要pub等方式下载:
import 'dart:ui' as ui;
- 系统主题变化函数绑定:
- 直接把下面代码中的onPlatformBrightnessChanged 赋值一个我们想执行的函数即可
ui.PlatformDispatcher.instance.onPlatformBrightnessChanged = () {
// 设置跟随系统主题变化
followingSystem();
};
- -
- 如果想取消监听,则同样把它赋值为null
ui.PlatformDispatcher.instance.onPlatformBrightnessChanged = null;
- -
- 如果想判断现在是否有在监听,则判断它是否不为null
if(null == ui.PlatformDispatcher.instance.onPlatformBrightnessChanged) {
// 当前没有在监听
} else {
// 有在监听
}
- -
- 注意 onPlatformBrightnessChanged 其实就是一个变量而已,你如果给它赋值好几次,那显然它的值就是最后一次赋值的结果
- 因此重复赋值并不会让它能执行多个函数
- 如果需要执行多个函数,应当把这些函数放进一个函数里,然后把它赋值给 onPlatformBrightnessChanged :
ui.PlatformDispatcher.instance.onPlatformBrightnessChanged = () {
fun1();
fun2();
fun3();
fun4();
......
};
- 系统主题变化时会执行 onPlatformBrightnessChanged 绑定的函数,那么我怎么知道现在系统的主题是什么类型呢?
- 可以使用如下代码判断:
if(ui.PlatformDispatcher.instance.platformBrightness == Brightness.dark) {
// 系统已经转变为夜间模式
// app跟随修改主题为夜间
} else {
// 系统已经转变为白天模式
// app跟随修改主题为白天
}
- 还有一个问题需要注意,启动app时,并不会触发上面绑定的函数
- 假设我们给app的默认主题是白天模式,此时系统已经是夜间模式,然后用户启动app,此时并不会触发 onPlatformBrightnessChanged ,因此app呈现的还是白天模式
- 解决方法:显然就是进入app时,我们手动执行一次判断系统主题,跟随变化,然后绑定监听函数即可:
// 进入app时手动调用一次 followingSystem(), 然后调用 setFollowingSystem() 绑定监听函数
void followingSystem() {
if (ui.PlatformDispatcher.instance.platformBrightness == Brightness.dark) {
// app跟随修改主题为夜间
} else {
// app跟随修改主题为白天
}
}
// 设置跟随系统主题变化
void setFollowingSystem() {
ui.PlatformDispatcher.instance.onPlatformBrightnessChanged = () {
followingSystem();
};
}
pharmacy website india: best india pharmacy – best india pharmacy
https://canadapharmast.online/# rate canadian pharmacies
canadian mail order pharmacy canadian mail order pharmacy online pharmacy canada
indianpharmacy com: indian pharmacy online – online pharmacy india
indianpharmacy com: indian pharmacies safe – п»їlegitimate online pharmacies india
pharmacy website india: top 10 online pharmacy in india – reputable indian online pharmacy
п»їlegitimate online pharmacies india: best india pharmacy – top 10 online pharmacy in india
canadian pharmacy store: pharmacies in canada that ship to the us – real canadian pharmacy
top 10 online pharmacy in india top 10 online pharmacy in india indian pharmacies safe
best online pharmacy india: india online pharmacy – top online pharmacy india
I like it when people get together and share opinions. Great site, continue the good work!
This is exactly what I was looking for.워드프레스 seo
https://foruspharma.com/# п»їbest mexican online pharmacies
canadapharmacyonline com escrow pharmacy canada canadian pharmacy meds
pharmacies in mexico that ship to usa mexico pharmacies prescription drugs mexican drugstore online
Jackie Chan https://karate-kid.jackiechan-ar.com was born in 1954 in Hong Kong under the name Chan Kong San.
canadian pharmacy prices: best canadian pharmacy – canadian pharmacy no rx needed
Brazilian footballer Malcom https://al-hilal.malcom-ar.com (full name Malcom Felipe Silva de Oliveira) achieved great success in Al Hilal, one of the leading football teams in Saudi Arabia and the entire Middle East.
canadian pharmacy india: global pharmacy canada – cross border pharmacy canada
http://foruspharma.com/# purple pharmacy mexico price list
best india pharmacy: indian pharmacy online – indianpharmacy com
buying prescription drugs in mexico online: mexican pharmaceuticals online – buying prescription drugs in mexico online
canadian pharmacy ratings: buy prescription drugs from canada cheap – canadianpharmacyworld
indian pharmacy top 10 online pharmacy in india cheapest online pharmacy india
mexican mail order pharmacies mexico pharmacies prescription drugs purple pharmacy mexico price list
mexican pharmacy: mexican drugstore online – mexican online pharmacies prescription drugs
http://foruspharma.com/# pharmacies in mexico that ship to usa
indian pharmacy paypal: indian pharmacy paypal – india pharmacy mail order
the canadian drugstore: canadian pharmacy meds reviews – reputable canadian online pharmacy
Monica Bellucci https://dracula.monica-bellucci-ar.com one of the most famous Italian actresses of our time, has a distinguished artistic career spanning many decades. Her talent, charisma, and stunning beauty made her an icon of world cinema.
mexican online pharmacies prescription drugs: buying from online mexican pharmacy – mexican rx online
Edson Arantes https://santos.pele-ar.com do Nascimento, known as Pele, was born on October 23, 1940 in Tres Coracoes, Minas Gerais, Brazil.
п»їbest mexican online pharmacies: mexico pharmacy – medicine in mexico pharmacies
medicine in mexico pharmacies buying prescription drugs in mexico online buying prescription drugs in mexico online
canada rx pharmacy world: canadian pharmacy scam – canadian pharmacy phone number
best online pharmacies in mexico: mexican pharmacy – pharmacies in mexico that ship to usa
legitimate canadian pharmacies best online canadian pharmacy my canadian pharmacy rx
I was able to find good information from your blog posts.
reputable mexican pharmacies online medication from mexico pharmacy mexico drug stores pharmacies
https://canadapharmast.com/# cheapest pharmacy canada
http://indiapharmast.com/# pharmacy website india
mexican online pharmacies prescription drugs: buying prescription drugs in mexico online – mexican border pharmacies shipping to usa
Sadio Mane https://al-nassr.sadio-mane-ar.com the Senegalese footballer best known for his performances at clubs such as Southampton and Liverpool, has become a prominent figure in Al Nassr.
Brazilian footballer Ricardo Escarson https://orlando-city.kaka-ar.com dos Santos Leite, better known as Kaka, is one of the most famous and successful players in football history.
Bella Hadid https://img-models.bella-hadid-ar.com is an American model who has emerged in recent years as one of the most influential figures in the world of fashion.
mexico drug stores pharmacies: mexican pharmacy – buying from online mexican pharmacy
mexican pharmaceuticals online: best online pharmacies in mexico – mexican rx online
pharmacies in mexico that ship to usa: mexico drug stores pharmacies – mexican rx online
pharmacy website india: pharmacy website india – pharmacy website india
mexican drugstore online mexican online pharmacies prescription drugs medication from mexico pharmacy