import 'dart:convert'; import 'package:flutter/widgets.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:webview_flutter/platform_interface.dart'; import 'package:webview_flutter/webview_flutter.dart'; class JavascriptInterface { final BuildContext context; final WebViewController? _controller; JavascriptInterface( BuildContext this.context, WebViewController? this._controller); Set getInterfaces() { List list = []; list.add(JavascriptChannel( name: 'yestv', onMessageReceived: (JavascriptMessage message) { var data = jsonDecode(message.message); String method = data["method"]; var params = data["params"]; String? _callback = data["callback"]; switch (method) { case "toast": toast(params); break; case "getUid": getUid(params, _callback); break; case "getBaseRequestParams": getBaseRequestParams(params, _callback); break; } })); return list.toSet(); } callback(String method, String params) { _controller!.evaluateJavascript("$method('$params')"); _controller!.evaluateJavascript("delete $method"); } //获取用户ID getUid(var params, String? callbackName) { if (callbackName != null) { callback(callbackName, "购"); } } //toast toast(params) { if (params != null && params["msg"] != null) { Fluttertoast.showToast(msg: params["msg"]); } } //获取基本的网络请求参数 getBaseRequestParams(var params, String? callbackName) { var ps = {}; if (params != null) { ps.addAll(params); } String result = jsonEncode(ps); if (callbackName != null) { callback(callbackName, result); } } }