Flutter1.12版本升级遇坑(该问题已经在最新的1.17版本中修复,请升级你的Flutter版本)

1,903 阅读1分钟

遇到问题

  • 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" />
    

总结

  • 当然这么做的话,只是临时解决问题,并不是最优解,期待官方的下一个版本能修复这个问题。