回顾记录 :Flutter -Android 通讯的三种方式

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",
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值