Open HXiaoMing opened 3 years ago
我的flutterA页面 顶部状态栏的文字是黑色 ,在flutterA页面跳转到flutterB页面,顶部状态栏的文字变白色了 ,两个页面的AppBar均使用相同的Widget 以及initState使用的也是相同的
1
也遇到了相同情况
我修复了,我一会把代码贴上去
@override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) async { SystemChrome.setSystemUIOverlayStyle( SystemUiOverlayStyle( systemNavigationBarColor: ColorTools.color_F4F4F4, systemNavigationBarDividerColor: ColorTools.color_F4F4F4, statusBarColor: Colors.transparent, systemNavigationBarIconBrightness: Brightness.dark, ), ); }); }
@override
Widget build(BuildContext context) {
return AnnotatedRegion
flutter_boost: git: url: 'https://github.com/alibaba/flutter_boost.git' ref: 'v3.0-beta.10'
initState 和 build 都加上就没问题了
可以试下这种方案: 在FlutterBoostActivity 的 concrete 方法设置状态栏为沉浸式,然后 在onPostResume 方法中设置状态栏字体颜色。留个Q:474010224
可以试下这种方案: 在FlutterBoostActivity 的 concrete 方法设置状态栏为沉浸式,然后 在onPostResume 方法中设置状态栏字体颜色。留个Q:474010224
我按你这处理,也没生效
fun newInstance(bundle: Bundle?): 自己的 { val hashMap = HashMap<String, Any>() return CachedEngineFragmentBuilder(自己的::class.java) .url("xxx") .urlParams(hashMap) .build() }
忘记改这个,可以了
onPostResume和onResume 都去执行下
fun newInstance(bundle: Bundle?): 自己的 { val hashMap = HashMap<String, Any>() return CachedEngineFragmentBuilder(自己的::class.java) .url("xxx") .urlParams(hashMap) .build() }
忘记改这个,可以了
请问下最终是怎么解决的,谢谢
@XIMOTIAN
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//设置这个是为了保证状态栏颜色与原生一致,不设置,flutter activity 的状态栏打开是灰色
StatusBarHelper.setStatusBarTranslucent(this);
}
@Override public void onPostResume() { super.onPostResume(); // 目前有个bug,第一次打开跟第二次打开时,状态栏中的文字图标颜色会变色,因此自定义设置颜色 StatusBarHelper.setStatusBarLightMode(this); }
@XIMOTIAN
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //设置这个是为了保证状态栏颜色与原生一致,不设置,flutter activity 的状态栏打开是灰色 StatusBarHelper.setStatusBarTranslucent(this); }
@OverRide public void onPostResume() { super.onPostResume(); // 目前有个bug,第一次打开跟第二次打开时,状态栏中的文字图标颜色会变色,因此自定义设置颜色 StatusBarHelper.setStatusBarLightMode(this); }
我的案例中代码贴的有点多,但是第一次启动的时候是正常的,后面再进入,又失效了。flutter版本是 4.2.0
@XIMOTIAN
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //设置这个是为了保证状态栏颜色与原生一致,不设置,flutter activity 的状态栏打开是灰色 StatusBarHelper.setStatusBarTranslucent(this); }
@OverRide public void onPostResume() { super.onPostResume(); // 目前有个bug,第一次打开跟第二次打开时,状态栏中的文字图标颜色会变色,因此自定义设置颜色 StatusBarHelper.setStatusBarLightMode(this); }
https://github.com/alibaba/flutter_boost/issues/1564 目前打算参考这个 修改下flutterBoost的 源码,然后重写 onUpdateSystemUiOverlays(),并在里面调用 : StatusBarUtils.with(this) .setColor(Color.WHITE) .init()
上面是我的方法、不确定能不能解决你的问题,你试试吧。
474010224 @.***
------------------ 原始邮件 ------------------ 发件人: "alibaba/flutter_boost" @.>; 发送时间: 2023年3月27日(星期一) 晚上6:46 @.>; @.**@.>; 主题: Re: [alibaba/flutter_boost] flutter_boost-3.0-beta.6打开两次flutter页面,顶部状态栏会变色 (#1060)
@XIMOTIAN @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //设置这个是为了保证状态栏颜色与原生一致,不设置,flutter activity 的状态栏打开是灰色 StatusBarHelper.setStatusBarTranslucent(this); } @OverRide public void onPostResume() { super.onPostResume(); // 目前有个bug,第一次打开跟第二次打开时,状态栏中的文字图标颜色会变色,因此自定义设置颜色 StatusBarHelper.setStatusBarLightMode(this); } 我的案例中代码贴的有点多,但是第一次启动的时候是正常的,后面再进入,又失效了。flutter版本是 4.2.0 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>
https://blog.csdn.net/u011733020/article/details/112260516?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167991397016800227441846%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=167991397016800227441846&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-112260516-null-null.article_score_rank_blog&utm_term=StatusBarHelper&spm=1018.2226.3001.4450 上面是我的方法、不确定能不能解决你的问题,你试试吧。 474010224 @. … ------------------ 原始邮件 ------------------ 发件人: "alibaba/flutter_boost" @.>; 发送时间: 2023年3月27日(星期一) 晚上6:46 @.>; @*.**@*.>; 主题: Re: [alibaba/flutter_boost] flutter_boost-3.0-beta.6打开两次flutter页面,顶部状态栏会变色 (#1060) @XIMOTIAN @OverRide protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //设置这个是为了保证状态栏颜色与原生一致,不设置,flutter activity 的状态栏打开是灰色 StatusBarHelper.setStatusBarTranslucent(this); } @OverRide public void onPostResume() { super.onPostResume(); // 目前有个bug,第一次打开跟第二次打开时,状态栏中的文字图标颜色会变色,因此自定义设置颜色 StatusBarHelper.setStatusBarLightMode(this); } 我的案例中代码贴的有点多,但是第一次启动的时候是正常的,后面再进入,又失效了。flutter版本是 4.2.0 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.>
好的,我尝试下你这种方式,谢谢
@OverRide void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) async { SystemChrome.setSystemUIOverlayStyle( SystemUiOverlayStyle( systemNavigationBarColor: ColorTools.color_F4F4F4, systemNavigationBarDividerColor: ColorTools.color_F4F4F4, statusBarColor: Colors.transparent, systemNavigationBarIconBrightness: Brightness.dark, ), ); }); }
@OverRide Widget build(BuildContext context) { return AnnotatedRegion( value: SystemUiOverlayStyle.dark.copyWith( statusBarColor: Colors.transparent, systemNavigationBarColor: ColorTools.color_F4F4F4, systemNavigationBarDividerColor: ColorTools.color_F4F4F4, systemNavigationBarIconBrightness: Brightness.dark, ), child: Scaffold( backgroundColor: ColorTools.white, resizeToAvoidBottomInset:false, body: SafeArea( child: MediaQuery( data: MediaQueryData.fromWindow(WidgetsBinding.instance.window).copyWith(textScaleFactor: 1), child: child, ), ), ), ); }
flutter_boost: git: url: 'https://github.com/alibaba/flutter_boost.git' ref: 'v3.0-beta.10'
为什么第一次进入flutter模块,状态栏的设置没有生效,后面进行才生效的?
在Android手机上,运行flutter_boost-3.0-beta.6 demo 第一次点击 open_custom_view_tab 顶部状态栏的文字是黑色(WiFi,电量那些信息)。 第二次点击 open_custom_view_tab 顶部状态栏的文字自动变成白色。 结果 必现。
如果将AppBar的brightness赋值成Brightness.light,然后打开该页面两次就会出现上述情况。顶部状态栏会变色。