重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

flutter交互,flutter交互特效

Flutter webview 交互

WebView(

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都网站设计、化州网络推广、微信小程序、化州网络营销、化州企业策划、化州品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供化州建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

initialUrl: url,

javascriptMode: JavascriptMode.unrestricted,

javascriptChannels: {

JavascriptChannel(

name: "AppNotifyInitSuccess", //JS调用AppNotifyInitSuccess.

onMessageReceived: (JavascriptMessage message) {

_jsCallBackJson = message.message;

showAppToast("获取JS回传数据: ${message.message}");

}),

},

onWebViewCreated: (WebViewController controller) {

_webViewController = controller;

},

),

//Flutter 主动和WebView通信.

_webViewController.evaluateJavascript("updateAppDataInfo('Flutter通过JS修改')");

flutter WebView 及其交互

flutter 部分  

Container(

  height: 200,

  clipBehavior: Clip.none,

  child: WebView(

    initialUrl: 'about:blank',

    onWebViewCreated: (WebViewController webViewController) {

      _webViewController = webViewController;

      _loadHtmlFromAssets();

    },

    javascriptMode: JavascriptMode.unrestricted,

    javascriptChannels: JavascriptChannel[

      _alertJavascriptChannel(context),

    ].toSet(),

  ),

)

JavascriptChannel _alertJavascriptChannel(BuildContext context) {

return JavascriptChannel(

    name: 'Toastxxx',

    onMessageReceived: (JavascriptMessage message) {

      print('============****${message.message}');

    });

}

HTML部分

button onclick="callFlutter()"callFlutter/button

script

function callFlutter() {

    Toastxxx.postMessage("JS调用了Flutter");

}

/script

flutter_inappbrowser和h5交互

需求,app中使用webview和h5交互,根据h5发过来的消息,在屏幕上展示flutter组件,并且可以发送消息给h5。

首先使用的组件是flutter_WebView_plugin,这个组件不能嵌套flutter组件,所以放弃这个组件。

flutter_inappbrowser 可以实现组合布局, 所以选用了此库, GitHub链接

[

flutter与原生交互方法和底层原理分析

1.环境准备, 参考链接

2.添加国内环境配置: 参考链接

3.新建

name: String类型,代表Channel的名字,也是其唯一标识符。

messager:BinaryMessenger类型,代表消息信使,是消息的发送与接收的工具。

codec: MessageCodec类型或MethodCodec类型,代表消息的编解码器。

fluuter中的MessageCodec用于二进制格式数据与基础数据之间的编解码。BasicMessageChannel所使用的编解码器就是MessageCodec。

iOS中,名称为FlutterMessageCodec,是一个协议,定义了两个方法:encode接收一个类型为id的消息,将其编码为NSData类型,而decode接收NSData类型消息,将其解码为id类型数据。

MessageCodec有多种不同的实现:

与MessageCodec不同的是,MethodCodec用于MethodCall对象的编解码,一个MethodCall对象代表一次从Flutter端发起的方法调用。MethodCall有2个成员变量:String类型的method代表需要调用的方法名称,通用类型(Android中为Object,iOS中为id)的arguments代表需要调用的方法入参

由于处理的是方法调用,故相比于MessageCodec,MethodCodec多了对调用结果的处理。当方法调用成功时,使用encodeSuccessEnvelope将result编码为二进制数据,而当方法调用失败时,则使用encodeErrorEnvelope将error的code、message、detail编码为二进制数据

MethodCodec有两种实现:

Flutter 使用插件实现双屏交互

本文将为大家讲解如何通过pub库插件快速实现Flutter应用在双屏Android设备上交互通信。

插件地址: flutter_subscreen_plugin

双屏插件实现原理: FlutterPlugin 实现双屏

主屏上的UI,我们添加一个按钮,点击生成一个随机数,发送给副屏显示,用于验证主屏与副屏的通信交互:

副屏ui上我们在initState中监听主屏给副屏的消息流,并将监听到的数据展示在文本上:

完成上述步骤,简单的demo就做好了,如下是demo在实体设备的运行效果图:


分享标题:flutter交互,flutter交互特效
网站地址:http://cqcxhl.cn/article/dseihgh.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP