Flutter.createView 方法已經(jīng)被棄用了 3性痢T衿稀k惹选纯丸!
效果圖
原生界面 | 集成flutter界面 |
---|---|
Android原生界面.jpg
|
flutter集成界面.jpg
|
創(chuàng)建原生項目
修改默認布局文件text 為 這是android 原生界面!
添加flutter依賴
原生項目同級目錄下執(zhí)行 以下語句
flutter create -t module flutter_library
androidx 項目也可以使用 flutter create --androidx -t module flutter_library
修改原生項目的setting.gradle 文件
添加一下代碼 并同步
//androidJoinFlutterTest 是本地目錄名可以自行修改
setBinding(new Binding([gradle:this]))
evaluate( new File(
settingsDir.parentFile,
'androidJoinFlutterTest/flutter_library/.android/include_flutter.groovy'
))
完成之后會自動生成flutter模塊
并在setting.gradle文件中引用
include ':flutter_library'
修改原生項目app目錄下的build.gradle 文件
android {
compileOptions{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation project(":flutter")
}
同步完成之后修改MainActivity 的代碼
MainActivity代碼
class MainActivity : AppCompatActivity() {
private val flutterEngineId = "flutterEngineId"
private var engine: FlutterEngine? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setTitle("flutter測試頁面")
setContentView(R.layout.activity_main)
engine = FlutterEngineCache.getInstance().get(flutterEngineId)
if (engine == null) {
engine = FlutterEngine(this)
engine?.dartExecutor?.executeDartEntrypoint(DartExecutor.DartEntrypoint.createDefault())
FlutterEngineCache.getInstance().put(flutterEngineId, engine)
}
//默認加載flutter的main.dart文件 setInitialRoute 修改初始界面
// engine.navigationChannel.setInitialRoute()
val view = createFlutterView()
view.attachToFlutterEngine(engine!!)
}
private fun createFlutterView(): FlutterView {
val flutterView = FlutterView(this)
val params = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
addContentView(flutterView, params)
return flutterView
}
override fun onResume() {
super.onResume()
engine?.lifecycleChannel?.appIsResumed()
}
override fun onPause() {
super.onPause()
engine?.lifecycleChannel?.appIsInactive()
}
override fun onStop() {
super.onStop()
engine?.lifecycleChannel?.appIsPaused()
}
}
flutter依賴也可以把flutter_library打包成arr 原生中依賴arr
打包命令
進入flutter_library目錄 flutter build apk