这一集里的 changeStatusBar 已经不适用了,该怎么改
来源:12-6 代码优化实现Dark Mode适配

demonCry
2022-09-19
仓库里最新的对应代码如下
///修改状态栏
void changeStatusBar(
{color: Colors.white,
StatusStyle statusStyle: StatusStyle.DARK_CONTENT,
BuildContext? context}) {
if (context != null) {
//fix Tried to listen to a value exposed with provider, from outside of the widget tree.
var themeProvider = Provider.of<ThemeProvider>(context, listen: false);
if (themeProvider.isDark()) {
statusStyle = StatusStyle.LIGHT_CONTENT;
color = HiColor.dark_bg;
}
}
var page = HiNavigator.getInstance().getCurrent()?.page;
//fix Android切换 profile页面状态栏变白问题
if (page is ProfilePage) {
color = Colors.transparent;
} else if (page is VideoDetailPage) {
color = Colors.black;
statusStyle = StatusStyle.LIGHT_CONTENT;
}
//沉浸式状态栏样式
var brightness;
if (Platform.isIOS) {
brightness = statusStyle == StatusStyle.LIGHT_CONTENT
? Brightness.dark
: Brightness.light;
} else {
brightness = statusStyle == StatusStyle.LIGHT_CONTENT
? Brightness.light
: Brightness.dark;
}
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light.copyWith(
statusBarColor: Colors.transparent,
statusBarBrightness: brightness,
statusBarIconBrightness: brightness,
));
}
color 完全没用?
context 搜了下全局也没有哪个调用的时候传了, 包括视频里的首页部分最新的代码里也没传context
… 这种错乱的情况不是第一次了, 老师就不能剪一下重录这些部分吗… 我们这些新来的支持正版期望的并不是这种教学服务啊
这不是打击我们这种买正版支持老师的人的信心吗?
评论也是 感觉老师完全是为了应付慕课的要求? 回答不少同学的问题都是“堵代码式”的, 很多回答就没深入思考过学生为什么有这种疑问 是哪里知识点或者周边的知识点理解不到位 ,很多回答根本不在点子上 (诚然很多情况下学员自己的描述也不够那么精准, 但如果真能表述那么精准知道自己是撒问题, 为什么不直接stackoverflow呢? )
几百大洋入正版 这种教学服务的态度 只能说糟蹋学员的心
哎 哎 哎!
写回答
1回答
-
CrazyCodeBoy
2022-09-20
1.color是给之前引入的flutter_statusbar_manager用的,后来flutter_statusbar_manager不支持高版本的flutter,所以替换成了系统的SystemChrome.setSystemUIOverlayStyle方案,在这种情况下不需要用到了color,后面的更新会将color移除。
2.context在home_page的第59行代码中使用使用的,主要是为了当页面返回到首页恢复首页的状态栏样式,可以参考下:https://git.imooc.com/coding-487/fa-pub/src/master/lib/page/home_page.dart#L5900
相似问题