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()
          }
      
      }
      
  • 相关阅读:
    常用 SQL Server 规范集锦
    让Git忽略所有obj和bin目录的同步
    Sql server 存储过程基础语法
    nginx 站点代理,负载均衡
    CentOS7.0安装Nginx-1.12.0
    CentOS7安装GNOME可视化界面和如何配置IP地址
    开发工具资料集合
    NOIP2018总结反思
    NOIP2018考试报告
    STL基础用法
  • 原文地址:https://www.cnblogs.com/yongfengnice/p/13950175.html
Copyright © 2011-2022 走看看