当前位置: 首页 > wzjs >正文

蓝一互动网站建设wordpress速度慢设置

蓝一互动网站建设,wordpress速度慢设置,携程电子商务网站建设,有个网站可以学做pptMethodChannel(方法通道) 用途:实现 双向通信,用于调用原生平台提供的 API 并获取返回结果。 场景:适合一次性操作,如调用相机、获取设备信息等。 使用步骤: Flutter 端:通过 Meth…
  1. MethodChannel(方法通道)
    用途:实现 双向通信,用于调用原生平台提供的 API 并获取返回结果。
    场景:适合一次性操作,如调用相机、获取设备信息等。

使用步骤:

  • Flutter 端:通过 MethodChannel监听事件流。
  static const platform =MethodChannel('com.example.fltest.plugin.DeviceInfoPlugin');
  • Android 端(Kotlin)
    private var methodChannel: MethodChannel? = nullval CHANNEL: String = "com.example.fltest.plugin.DeviceInfoPlugin"private fun getPhoneNumber(): Any? {val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager?
//        val phoneNumber = telephonyManager!!.line1Numberval phoneNumber = "18627000332"return phoneNumber}
  1. EventChannel(事件通道)
    用途:实现 单向数据流,用于原生平台向 Flutter 持续发送事件(如传感器数据)。
    场景:适合实时数据流,如监听陀螺仪、GPS 位置更新等。
    使用步骤:
  • Flutter 端:通过 EventChannel 监听事件流。
static const eventChannel =EventChannel('com.example.fltest.plugin.DeviceInfoPlugin/event');Stream<int> get _batteryLevelStream {return eventChannel.receiveBroadcastStream("111").cast<int>();}
  • Android 端(Kotlin)
 
class DeviceInfoPlugin(var context: Context) : EventChannel.StreamHandler, FlutterPlugin {private var eventChannel: EventChannel? = nullval EVENT_CHANNEL: String = "com.example.fltest.plugin.DeviceInfoPlugin/event"override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {result.notImplemented()}override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) {setupChannels(binding.binaryMessenger, binding.applicationContext)}override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {teardownChannels()}private fun setupChannels(messenger: BinaryMessenger, context: Context) {this.context = contexteventChannel = EventChannel(messenger, EVENT_CHANNEL)eventChannel?.setStreamHandler(this)}private fun teardownChannels() {eventChannel?.setStreamHandler(null)eventChannel = null}private val mainHandler = Handler(Looper.getMainLooper())override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {Toast.makeText(context, arguments.toString(), Toast.LENGTH_SHORT).show()events?.let {sendBatteryLevel(it)events.success(1)mainHandler.postDelayed({events.success(2)}, 2000)mainHandler.postDelayed({ events.success(3) }, 4000)}}override fun onCancel(arguments: Any?) {}private fun sendBatteryLevel(events: EventChannel.EventSink) {val batteryLevel = -1if (batteryLevel != -1) {events.success(batteryLevel)} else {events.error("UNAVAILABLE", "Battery level not available.", null);}}
}
  1. BasicMessageChannel(基础消息通道)
    用途:支持 异步消息传递,使用自定义编解码器传递数据。
    场景:适合简单的数据交换(如 JSON、二进制数据)。

使用步骤:

  • Flutter 端:通过 BasicMessageChannel监听事件流。
  final BasicMessageChannel<String> messageChannel =BasicMessageChannel<String>('com.example.fltest.plugin.DeviceInfoPlugin/basicMessage',StringCodec(),);// 发送消息
Future<String> sendMessage(String message) async {return await messageChannel.send(message);
}void initState() {super.initState();// 设置消息处理器messageChannel.setMessageHandler((String? message) async {print('Received message from native: $message');return '$message';});}
  • Android 端(Kotlin)
package com.example.fltest.pluginimport android.content.Context
import android.os.Handler
import android.os.Looper
import android.telephony.TelephonyManager
import android.widget.Toast
import io.flutter.embedding.engine.plugins.FlutterPlugin
import io.flutter.plugin.common.BasicMessageChannel
import io.flutter.plugin.common.BasicMessageChannel.Reply
import io.flutter.plugin.common.BinaryMessenger
import io.flutter.plugin.common.EventChannel
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
import io.flutter.plugin.common.StandardMessageCodec
import io.flutter.plugin.common.StringCodecclass DeviceInfoPlugin(var context: Context) :  FlutterPlugin {private var basicMessageChannel: BasicMessageChannel<String>? = nullval BASIC_MESSAGE_CHANNEL: String = "com.example.fltest.plugin.DeviceInfoPlugin/basicMessage"override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {result.notImplemented()}override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) {setupChannels(binding.binaryMessenger, binding.applicationContext)}override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {teardownChannels()}private fun setupChannels(messenger: BinaryMessenger, context: Context) {this.context = contextbasicMessageChannel = BasicMessageChannel(messenger, BASIC_MESSAGE_CHANNEL, StringCodec.INSTANCE)basicMessageChannel?.setMessageHandler { message, reply ->println("Received message from Flutter: $message")reply.reply("Message received")basicMessageChannel?.send(message) { reply -> Toast.makeText(context, reply.toString(), Toast.LENGTH_SHORT).show() }}// 发送消息
basicMessageChannel.send("Hello from Android") { reply ->Log.d("TAG", "Reply: $reply")
}}private fun teardownChannels() {}override fun onCancel(arguments: Any?) {}}

在MainActivity初始化添加插件类

package com.example.fltestimport com.example.fltest.plugin.DeviceInfoPlugin
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngineclass MainActivity: FlutterActivity(){override fun configureFlutterEngine(flutterEngine: FlutterEngine) {super.configureFlutterEngine(flutterEngine)flutterEngine.plugins.add(DeviceInfoPlugin(this))}
}

总结:

方法方向使用场景
MethodChannel双向调用原生 API 并获取结果
EventChannel单向(原生→Flutter)监听持续事件(如传感器)
BasicMessageChannel双向简单消息传递(字符串、二进制数据)

根据具体需求选择合适的方式,可覆盖绝大多数跨平台交互场景。


文章转载自:

http://p2JqzRmp.cfnht.cn
http://9DKP1KX7.cfnht.cn
http://rPwXVjfl.cfnht.cn
http://0kqiSUSe.cfnht.cn
http://kyjfjvUZ.cfnht.cn
http://fBi9doBX.cfnht.cn
http://2ZuU7w6F.cfnht.cn
http://WDgtpFU5.cfnht.cn
http://tSAgSekt.cfnht.cn
http://tax56HLx.cfnht.cn
http://z5A1YBJ1.cfnht.cn
http://9AidWgIl.cfnht.cn
http://RmYtRVKs.cfnht.cn
http://hAvOGsuS.cfnht.cn
http://RP5tsiNn.cfnht.cn
http://vc67ERSi.cfnht.cn
http://Cy2MEsR9.cfnht.cn
http://OmYIt5jA.cfnht.cn
http://skYPF6DD.cfnht.cn
http://0Io8k92G.cfnht.cn
http://Fhi559sR.cfnht.cn
http://VRvdpDPt.cfnht.cn
http://jr1VdFn0.cfnht.cn
http://uUWj23xB.cfnht.cn
http://IaMEvvbP.cfnht.cn
http://7XcW9nnp.cfnht.cn
http://vKHl3Q08.cfnht.cn
http://IkpnBOOf.cfnht.cn
http://EIhf3Ftr.cfnht.cn
http://ewgSVN3h.cfnht.cn
http://www.dtcms.com/wzjs/680507.html

相关文章:

  • 网站服务器制作哪个旅游网站规划好
  • 视频拍摄设备推荐seo运营专员
  • 合肥建站网站模板中级网页设计师
  • 南昌做网站的流程广州专业网站制作公司
  • 芜湖网站制作公司建设网站的可行性分析
  • 门户网站盈利wordpress ent
  • 做网站最流行的语言网站地图无法生成
  • 网站视频开发平台网络营销案例成功案例
  • 做网站零成本软件公司网站模版
  • 响应式网站一般做多大dokcer wordpress
  • 网站关键词快照优化hyein seo是什么牌子
  • asp.net空网站长沙外贸公司排名
  • 什么网站做弹窗广告好威海屋顶防水价格威海做防水网站
  • 电子商务网站建设课程武冈做网站
  • 拓者设计吧室内设计官网登录seo数据分析
  • 石家庄seo网站排名建一个购物网站大约多少钱
  • 免费网站添加站长统计自己的网站什么做优化
  • 中国免费网站服务器主机域名万网官网登录
  • 5成都网站建设如何做网站app
  • 微网站开发不用模板网站开发人员 生活
  • seo网站代码正规的网站建设明细报价表
  • 建一个网站的手机电脑版宿州做网站的公司有哪些
  • 仿站建设湖南网站建设网
  • 哪个建站系统好南京做网站建设的公司排名
  • 免费效果图网站开发一个企业网站要多少钱
  • 企业为什么要建设电子商务网站网站制作营销型
  • 网站建设公司出路规划网站建设的总体目标
  • 国外搜索引擎网站seo网站关键词优化怎么做
  • 售后服务方案 网站建设iframe框架做网站
  • 自己学做网站怎么用默认程序做网站