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

网络科技公司帮高校建设网站济宁做网站的

网络科技公司帮高校建设网站,济宁做网站的,抖音信息流广告怎么投放,sem专员flutter开发实战-inappwebview实现flutter与Javascript方法调用 在使用inappwebview时候#xff0c;需要flutter端与JS进行交互#xff0c;调用相应的方法#xff0c;在inappwebview中的JavaScript Handlers。 一、JavaScript Handlers 要添加JavaScript Handlers#…flutter开发实战-inappwebview实现flutter与Javascript方法调用 在使用inappwebview时候需要flutter端与JS进行交互调用相应的方法在inappwebview中的JavaScript Handlers。 一、JavaScript Handlers 要添加JavaScript Handlers可以使用InAppWebViewController.addJavaScriptHandler方法在该方法中定义handlerName和JavaScript端调用它时要调用的回调。回调可以返回要在JavaScript端发送的数据。如果您需要在加载网页后立即管理JavaScript处理程序则应在创建InAppWebView时调用InAppWebViewController.addJavaScriptHandler。 以下是如何注册JavaScript处理程序的示例 onWebViewCreated: (controller) {// register a JavaScript handler with name myHandlerNamecontroller.addJavaScriptHandler(handlerName: myHandlerName, callback: (args) {// print arguments coming from the JavaScript side!print(args);// return data to the JavaScript side!return {bar: bar_value, baz: baz_value};}); }, 在JavaScript端要执行回调处理程序并将数据发送到Flutter您需要使用window.Flutter_inappwebview.callHandlerhandlerName…args方法其中handlerName是一个字符串表示您正在调用的处理程序名称args是可以发送到Fluter方面的可选参数。 注意 如果相更换一个名字我们可以更换一个名字来嵌套window.flutter_inappwebview window.myCustomObj { callHandler: window.flutter_inappwebview.callHandler } and, then, you can use window.myCustomObj.callHandler 此外可以通过这种方式包装整个特定的处理代码 const myHandlerName (…args) window.flutter_inappwebview.callHandler(‘myHandlerName’, …args); 然后调用myHandlerName(); 在Javascript端如果需要调用callHandler需要监听flatterInAppWebViewPlatformReady。可以使用在flatterInAppWebViewPlatformReady事件被分派时设置的全局标志变量并在调用window.flutter_inappwebview.callHandler方法之前使用它。 示例代码如下 // execute inside the flutterInAppWebViewPlatformReady event listener window.addEventListener(flutterInAppWebViewPlatformReady, function(event) {const args [1, true, [bar, 5], {foo: baz}];window.flutter_inappwebview.callHandler(myHandlerName, ...args); });// or using a global flag variable var isFlutterInAppWebViewReady false; window.addEventListener(flutterInAppWebViewPlatformReady, function(event) {isFlutterInAppWebViewReady true; }); // then, somewhere in your code if (isFlutterInAppWebViewReady) {const args [1, true, [bar, 5], {foo: baz}];window.flutter_inappwebview.callHandler(myHandlerName, ...args); } 在flutter端Flutter在执行注入方法时候调用evaluateJavascript来执行callHandler这个flutterInAppWebViewPlatformReady无需监听因为这个flutterInAppWebViewPlatformReady已经Ready了。 可以在onLoadStop中调用代码 onLoadStop: (controller, url) async {await controller.evaluateJavascript(source: const args [1, true, [bar, 5], {foo: baz}];window.flutter_inappwebview.callHandler(myHandlerName, ...args);); }, window.flutter_inappwebview.callHandler返回一个JavaScript Promise该Promise可用于获取回调返回的json结果。在这种情况下只需返回您想要发送的数据它将使用dart:convert库中的jsonEncode自动进行json编码。 一个简单的示例代码 import dart:async; import dart:io; import package:flutter/material.dart; import package:flutter_inappwebview/flutter_inappwebview.dart;Future main() async {WidgetsFlutterBinding.ensureInitialized();if (Platform.isAndroid) {await AndroidInAppWebViewController.setWebContentsDebuggingEnabled(true);}runApp(new MyApp()); }class MyApp extends StatefulWidget {override_MyAppState createState() new _MyAppState(); }class _MyAppState extends StateMyApp {InAppWebViewGroupOptions options InAppWebViewGroupOptions(android: AndroidInAppWebViewOptions(useHybridComposition: true,),);overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: Text(JavaScript Handlers)),body: SafeArea(child: Column(children: Widget[Expanded(child: InAppWebView(initialData: InAppWebViewInitialData(data: !DOCTYPE html html langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0/headbodyh1JavaScript Handlers/h1scriptwindow.addEventListener(flutterInAppWebViewPlatformReady, function(event) {window.flutter_inappwebview.callHandler(handlerFoo).then(function(result) {// print to the console the data coming// from the Flutter side.console.log(JSON.stringify(result));window.flutter_inappwebview.callHandler(handlerFooWithArgs, 1, true, [bar, 5], {foo: baz}, result);});});/script/body /html),initialOptions: options,onWebViewCreated: (controller) {controller.addJavaScriptHandler(handlerName: handlerFoo, callback: (args) {// return data to the JavaScript side!return {bar: bar_value, baz: baz_value};});controller.addJavaScriptHandler(handlerName: handlerFooWithArgs, callback: (args) {print(args);// it will print: [1, true, [bar, 5], {foo: baz}, {bar: bar_value, baz: baz_value}]});},onConsoleMessage: (controller, consoleMessage) {print(consoleMessage);// it will print: {message: {bar:bar_value,baz:baz_value}, messageLevel: 1}},),),]))),);} } 二、监听自定义CustomEvent 可以设置一个消息事件侦听器与postMessage一起使用或一个自定义事件侦听器。 // message event listener window.addEventListener(message, (event) {console.log(event.data); }, false);// or custom event listener window.addEventListener(myCustomEvent, (event) {console.log(event.detail); }, false); 然后使用window.dispatch // using postMessage method window.postMessage({foo: 1, bar: false});// or dispatching a custom event const event new CustomEvent(myCustomEvent, {detail: {foo: 1, bar: false} }); window.dispatchEvent(event); 因此可以在运行时使用InAppWebViewController.eevaluatteJavascript方法或在web应用程序内部设置这些事件侦听器并使用相同的方法调度这些事件。 例如 onLoadStop: (controller, url) async {await controller.evaluateJavascript(source: window.addEventListener(myCustomEvent, (event) {console.log(JSON.stringify(event.detail));}, false););await Future.delayed(Duration(seconds: 5));controller.evaluateJavascript(source: const event new CustomEvent(myCustomEvent, {detail: {foo: 1, bar: false}});window.dispatchEvent(event);); }, onConsoleMessage: (controller, consoleMessage) {print(consoleMessage);// it will print: {message: {foo:1,bar:false}, messageLevel: 1} }, 三、小结 flutter开发实战-inappwebview实现flutter与Javascript方法调用。描述可能不是特别准确请见谅。 学习记录每天不停进步。
http://www.hkea.cn/news/14318038/

相关文章:

  • 口碑做团购网站百度竞价电话
  • 常州建网站东莞网站建设营销哪家好
  • 这样做网站微信扫描 WordPress
  • wordpress全站启用ssl张戈石家庄市制作网站公司
  • 校园网站模版生产备案号怎么查询网站
  • pc开奖网站建设网络连接服务
  • 网站备案背景墙深圳便宜网站建设
  • 商城网站建设与维护方案网站备案期间做什么
  • 佛山 网站设计公司wordpress主题自适应
  • 建立子目录网站做电商网站运营
  • 建一个推广网站价格石狮建设局网站
  • 变性人做欲网站带管理后台的网站
  • 短网站生成公司软文代写
  • 会泽住房和城乡建设局网站珠海互联网公司
  • 徐州智能建站怎么做宁波seo深度优化平台有哪些
  • 园林网站免费模板网络行为管理系统
  • 网站开发 阿里北京市住房和城乡建设厅官方网站
  • 深圳网站建设qwyx100wordpress year
  • 如何建设好营销网站酒店如何做网络推广
  • 长春市做网站推广河南郑州app建设网站
  • 如何查询网站的访问量查看网站的 cms
  • 上海网站建设推荐秒搜科技购物网站域名大小
  • 郑州网站建设学习开源无代码开发平台
  • 最好的网站建设团队网站建设 指标
  • 大连哪里有手机自适应网站建设班级建设怎样建立班级网站
  • 手机网站微信链接怎么做的兰州生活网
  • 个人建站网站太原市微网站建设
  • 上海建设银行官网网站6网站开发最新书籍
  • 如何查网站空间百度指数数据分析平台入口
  • 购物网站用那个软件做游戏策划