簡介
狀態(tài)欄一直沒有管過,反正在最上層佛嬉,也就亮(白)夜只,暗(黑)兩種模式垒在。一直沒有問題,也很少有人關(guān)心
問題
后來扔亥,重寫了頭部场躯,拋棄了AppBar()
,用了一個Container()
來模擬旅挤。并且在暗黑模式下踢关,UI設(shè)計給的顏色是暗黑模式下,給的背景色是純黑粘茄。這就導(dǎo)致签舞,“暗黑下時間欄看不到了”
企業(yè)微信截圖_41c2cc3a-38f0-4181-b987-feb474e8ec36.png
如何修改?
既然棄用了
AppBar()
柒瓣,那么通過修改屬性來改變狀態(tài)欄樣式的方式行不通了儒搭。采用全局函數(shù)
static void setSystemUIOverlayStyle(SystemUiOverlayStyle style)
進(jìn)行修改。和模式應(yīng)該聯(lián)系起來:在暗黑模式下芙贫,狀態(tài)欄應(yīng)該是亮色搂鲫;在明亮模式下,狀態(tài)欄應(yīng)該是暗色磺平;
if (ThemeTool.isdark()) {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);
} else {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark);
}
- 如果有頁面有特殊要求魂仍,到時候再設(shè)置一遍就好。
修復(fù)效果
這種想法效果拣挪,對比很強烈擦酌,非常清晰
- 明亮模式,狀態(tài)欄是暗色
企業(yè)微信截圖_5dbfc76d-8ede-4c48-9d3b-2d63289202dc.png
- 暗黑模式菠劝,狀態(tài)欄是亮色
企業(yè)微信截圖_1048415f-2982-4fad-8bf6-04cb8dd5f9e9.png
問題
在實際嘗試過程中赊舶,發(fā)現(xiàn)改變狀態(tài)欄不是每一次都成功,非常郁悶。
后來嘗試了延時執(zhí)行锯岖,感覺上能夠提高成功率介袜。
class DeviceUtil {
/// 切換狀態(tài)欄
static changeStatusBar() {
Future.delayed(const Duration(seconds: 1), () {
if (ThemeTool.isdark()) {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);
} else {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark);
}
});
}
}