flutter学习笔记五(混合开发解决黑屏问题)

解决混合开发黑屏问题

  1. 将Android项目中嵌入Flutter工程的时候,在跳转的时候会黑屏,目前我也没有找到很好的方法,网上的方法也试了一下,目前也还没有比较好的效果,有道友留言说打release 也许不会黑屏这个我没试验,有兴趣的道友可以试试,下面来说说这种简单粗暴的方法这是在debug模式下操作的:
  • 直接配置当前activity的theme为透明
<style name="FlutterTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@drawable/task_bg</item>
    </style>
  • 然后在当前activity中设置该主题
<activity           
      android:name="com.readnewhome.FlutterIntegralCenterActivity"
      android:screenOrientation="portrait"
      android:theme="@style/FlutterTheme" >
</activity>
  1. 这是一种比较好的处理方法先隐藏显示,等待渲染好第一帧后才显示flutter页面
  • 这里要注意一点要在布局中先把activity布局设置为InVisible状态,不要使用Gone用InVisible,渲染完成后再设置为Visible即可
private void initView()
 {
        final FlutterView flutterView =Flutter.createView(this , getLifecycle() ,"route1");
        final FrameLayout layout = (FrameLayout) findViewById(R.id.flutter_container);
        layout.addView(flutterView);
        final FlutterView.FirstFrameListener[] listeners = new FlutterView.FirstFrameListener[1];
        listeners[0] = new FlutterView.FirstFrameListener() {
            @Override
            public void onFirstFrame() {
                layout.setVisibility(View.VISIBLE);
            }
        };
        flutterView.addFirstFrameListener(listeners[0]);
  }
  • activity代码
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/flutter_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="invisible">

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

推荐阅读更多精彩内容