Flutter 之 页面启动黑屏

现象:打开Flutter对应的Activity(io.flutter.app.FlutterFragmentActivity),因为第一次渲染慢,会闪一下黑屏

解决方案:

AndroidManifest添加meta-data

<meta-data
                android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
                android:value="true"/>

代码如下:

<activity
            android:name=".flutter.FlutterActivity"
            android:hardwareAccelerated="true"
            android:screenOrientation="portrait"
            android:theme="@style/FlutterTheme">
            <meta-data
                android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
                android:value="true"/>
        </activity>
<style name="FlutterTheme" parent="AppTheme">
        <item name="android:windowBackground">@color/white</item>
        <item name="android:statusBarColor">@color/white</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowAnimationStyle">@style/windowAnimation</item>
    </style>

IOS同理

代码如下:

#pragma mark - life cycle
- (instancetype)init {
    self = [super init];
    if (self) {
        UIView *view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
        view.backgroundColor = [UIColor whiteColor];
        self.splashScreenView = view;
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor whiteColor];
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    
    if (self.navigationController) {
        [self.navigationController setNavigationBarHidden:YES animated:YES];
    }
}

@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容