1:根据路由名打开指定页面
package cn.hualand.hy
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun gotoA(v: View) {
//BasicMessageChannel 方式
FlutterRouterActivity.stare("A", this)
}
fun gotoB(v: View) {
//EventChannel 方式
BFlutterRouterActivity.stare("B", this)
}
fun gotoC(v: View) {
//MethodChannel 方式
FlutterFragmLayoutActivity.stare("C", this)
// FlutterRouterActivity.stare("C", this)
}
}
2:
BasicMessageChannel 双向通讯
EventChannel // 类似订阅观察模式,改变响应
MethodChannel //双向通讯
package cn.hualand.hy
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import io.flutter.embedding.android.FlutterActivity
import io.flutter.plugin.common.*
import io.flutter.plugins.GeneratedPluginRegistrant
// 路由名字方式 BasiMethodChannel 使用
class FlutterRouterActivity : FlutterActivity() {
companion object {
fun stare(router_name: String, activity: Context) {
var intent = Intent(activity, FlutterRouterActivity::class.java)
intent.putExtra("router_", router_name)
activity.startActivity(intent)
}
}
//容器,通过路由名字决定加载widget
var router_ = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
GeneratedPluginRegistrant.registerWith(flutterEngine!!)
router_ = "${intent.getStringExtra("router_")}"
init()
}
//发送路由名字,用于flutter 判断渲染widget
override fun getInitialRoute(): String {
return if (TextUtils.isEmpty(router_)) super.getInitialRoute() else router_
}
lateinit var basicMessageChannel: BasicMessageChannel<String>
fun init() {
//初始化 BasicMessageChannel ,指定约定的通讯名
basicMessageChannel = BasicMessageChannel<String>(
flutterEngine!!.dartExecutor,
"basimethodchannel",