We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
问题背景: 我司App支持黑白两色皮肤,关闭Flutter引擎针对Android一端自动修改状态栏颜色功能后,FlutterBoostFragment页面在白色皮肤下展示了白色的状态栏图标。
问题原因: 由于引擎自动修改状态栏颜色不可控,故我们关闭了Flutter引擎中自动改变状态栏颜色的逻辑,关闭代码如下:
class CustomFBFlutterBinding extends WidgetsFlutterBinding with BoostFlutterBinding { @override void initInstances() { super.initInstances(); // 不自动改变状态栏,关闭引擎中的设置 renderView.automaticSystemUiAdjustment = false; } }
但是发现关闭Flutter引擎中的自动改变状态栏逻辑后,状态栏颜色依然不可控,最终排查定位到,在FlutterBoostFragment#onResume方法中,调用了platformPlugin.updateSystemUiOverlays()方法导致状态栏显示异常,源码如下:
public class FlutterBoostFragment extends FlutterFragment implements FlutterViewContainer { @Override public void onResume() { super.onResume(); if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q) { final FlutterContainerManager containerManager = FlutterContainerManager.instance(); FlutterViewContainer top = containerManager.getTopActivityContainer(); boolean isActiveContainer = containerManager.isActiveContainer(this); if (isActiveContainer && top != null && top != this.getContextActivity() && !top.isOpaque() && top.isPausing()) { Log.w(TAG, "Skip the unexpected activity lifecycle event on Android Q. " + "See https://issuetracker.google.com/issues/185693011 for more details."); return; } } stage = LifecycleStage.ON_RESUME; if (!isHidden()) { didFragmentShow(); getFlutterEngine().getLifecycleChannel().appIsResumed(); } // Update system UI overlays to match Flutter's desired system chrome style Assert.assertNotNull(platformPlugin); // 此方法调用导致状态栏图标颜色异常,希望独立该方法调用,方便子类重写定制逻辑 platformPlugin.updateSystemUiOverlays(); if (DEBUG) Log.d(TAG, "#onResume: " + this); } }
解决方案: 希望独立该platformPlugin.updateSystemUiOverlays()方法调用,方便子类重写定制逻辑。
修改建议方案如下代码:
public class FlutterBoostFragment extends FlutterFragment implements FlutterViewContainer { @Override public void onResume() { super.onResume(); if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q) { final FlutterContainerManager containerManager = FlutterContainerManager.instance(); FlutterViewContainer top = containerManager.getTopActivityContainer(); boolean isActiveContainer = containerManager.isActiveContainer(this); if (isActiveContainer && top != null && top != this.getContextActivity() && !top.isOpaque() && top.isPausing()) { Log.w(TAG, "Skip the unexpected activity lifecycle event on Android Q. " + "See https://issuetracker.google.com/issues/185693011 for more details."); return; } } stage = LifecycleStage.ON_RESUME; if (!isHidden()) { didFragmentShow(); getFlutterEngine().getLifecycleChannel().appIsResumed(); } // Update system UI overlays to match Flutter's desired system chrome style onUpdateSystemUiOverlays(); if (DEBUG) Log.d(TAG, "#onResume: " + this); } /** * 方便子类修改 */ protected void onUpdateSystemUiOverlays(){ Assert.assertNotNull(platformPlugin); platformPlugin.updateSystemUiOverlays(); } }
Flutter Boost Version: v3.0-null-safety-preview.15~18 Target Platform: android Target OS version/browser: 三星 s12 android 11 Devices: 三星 s12
The text was updated successfully, but these errors were encountered:
问题如果已经定位到了,可以提一个PR过来修复这个问题,感谢
Sorry, something went wrong.
已经提交PR了,可以看下
PR已经合入,感谢
No branches or pull requests
问题背景:
我司App支持黑白两色皮肤,关闭Flutter引擎针对Android一端自动修改状态栏颜色功能后,FlutterBoostFragment页面在白色皮肤下展示了白色的状态栏图标。
问题原因:
由于引擎自动修改状态栏颜色不可控,故我们关闭了Flutter引擎中自动改变状态栏颜色的逻辑,关闭代码如下:
但是发现关闭Flutter引擎中的自动改变状态栏逻辑后,状态栏颜色依然不可控,最终排查定位到,在FlutterBoostFragment#onResume方法中,调用了platformPlugin.updateSystemUiOverlays()方法导致状态栏显示异常,源码如下:
解决方案:
希望独立该platformPlugin.updateSystemUiOverlays()方法调用,方便子类重写定制逻辑。
修改建议方案如下代码:
Flutter Boost Version: v3.0-null-safety-preview.15~18
Target Platform: android
Target OS version/browser: 三星 s12 android 11
Devices: 三星 s12
The text was updated successfully, but these errors were encountered: