zoukankan      html  css  js  c++  java
  • android原生项目集成flutter模块

    android原生项目集成flutter模块

    • 创建flutter模块

      使用android studio,File->New->New Flutter Project...->Flutter Module->Next->Next->Finish,即可完成,期间可以修改包名、项目名称等。
      
    • 配置settings.gradle

      setBinding(new Binding(gradle: this))
      evaluate(new File(settingsDir.parent, "fluttermodule/.android/include_flutter.groovy"))      //fluttermodule是flutter模块项目名称
      
    • 配置build.gradle

      //flutter是默认模块名称,具体看build/outputs/aar下的aar包名称,可以通过settings.gradle里的include(':test')和 project(':test').projectDir = new File('项目路径')修改名称为test并指定项目路径
      api project(path: ':flutter')	
      
      
    • 代码

      //BaseActivity必须继承AppCompatActivity,才有ActivityLifeCycle。
      class FlutterTestActivity : BaseActivity() {
          override fun setLayout() = R.layout.m_activity_flutter_test
          
          private val flutterEngineId = "flutterEngineId"
          private var engine: FlutterEngine? = null
      
          override fun initView(view: View) {
              setToolbarTitle("flutter测试页面")
              engine = FlutterEngineCache.getInstance().get(flutterEngineId)
              if (engine == null) {
                  engine = FlutterEngine(this)
                  engine?.dartExecutor?.executeDartEntrypoint(DartExecutor.DartEntrypoint.createDefault())
                  FlutterEngineCache.getInstance().put(flutterEngineId, engine)
              }
              val view = createFlutterView()
              view.attachToFlutterEngine(engine!!)
          }
      
          private fun createFlutterView(): FlutterView {
              val flutterView = FlutterView(this)      //默认加载flutter侧的main.dart文件
              val params = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
              binding.flContain.addView(flutterView, params)
              return flutterView
          }
      
          override fun initEvent() {
          }
      
          override fun createPresenter() = FlutterTestPresenter()
      
          override fun onResume() {
              super.onResume()
              engine?.lifecycleChannel?.appIsResumed()
          }
      
          override fun onPause() {
              super.onPause()
              engine?.lifecycleChannel?.appIsInactive()
          }
      
          override fun onStop() {
              super.onStop()
              engine?.lifecycleChannel?.appIsPaused()
          }
      
      }
      
  • 相关阅读:
    Leo程序员羊皮卷文摘(更新ing)
    ubuntu下的yuv播放器
    浏览器之一
    海量数据处理常用思路和方法(zh)
    我本将心向明月,奈何明月照沟渠
    转载光纤通信之父
    重装系统或是更换电脑之后,Foxmail的恢复
    关于录制Linux视频
    Linux之路(原发表于07年,现在搬到博客)
    Gentoo安装 miniCD+stage3
  • 原文地址:https://www.cnblogs.com/yongfengnice/p/13950175.html
Copyright © 2011-2022 走看看