Flutter1.12版本升级遇坑


遇到问题

  • flutter1.12版本SDK创建新项目的时候,Android项目会将继承的 FlutterActivity 从 io.flutter.app.FlutterActivity 替换为 io.flutter.embedding.android.FlutterActivity,AndroidManifest文件也会有一些改变

    import io.flutter.embedding.android.FlutterActivity //更新的部分
    import io.flutter.embedding.engine.FlutterEngine
    import io.flutter.plugins.GeneratedPluginRegistrant
    
    class MainActivity: FlutterActivity() {
        override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
            GeneratedPluginRegistrant.registerWith(flutterEngine);
        }
    }
    
    //AndroidManifest文件的变化
     <meta-data
        android:name="flutterEmbedding"
        android:value="2" />
  • 在实际开发过程中会有这样的问题,TextField 在你已经输入的情况下,按下home按键返回桌面,再回到app时,输入框的内容会自动清除。如下图:

解决方案

  • 1、将MainActivity继承的FlutterActivity改为io.flutter.app.FlutterActivity

    import android.os.Bundle
    import io.flutter.app.FlutterActivity //(修改之前为import io.flutter.embedding.android.FlutterActivity)
    import io.flutter.plugins.GeneratedPluginRegistrant
    
    class MainActivity : FlutterActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            GeneratedPluginRegistrant.registerWith(this);
        }
    }
  • 2、移除AndroidManifest.xml文件中的以下代码

    <meta-data
         android:name="flutterEmbedding"
         android:value="2" />

    总结

  • 当然这么做的话,只是临时解决问题,并不是最优解,期待官方的下一个版本能修复这个问题。参考https://github.com/flutter/flutter/issues/47628#issuecomment-576889475


文章作者: bigshot
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 bigshot !
 上一篇
Flutter环境搭建(Mac) Flutter环境搭建(Mac)
.从github拉取代码: git clone -b beta https://github.com/flutter/flutter.git 配置环境变量: 在当期用户目录下创建.bash_profile文件,如果该文件已经存在,
2020-04-08 bigshot
下一篇 
Flutter1.12升级后遇到的问题 Flutter1.12升级后遇到的问题
相信看过官方更新日志的小伙伴都知道新版本的flutter和Android原生交互有一些改变,主要在以下部分 1.自定义的Plugin类需要实现FlutterPlugin的接口,并实现以下两个方法 @Override public void
2020-04-02 bigshot
  目录