import 'dart:convert'; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; import 'package:makemoney/utils/image_util.dart'; import 'package:package_info/package_info.dart'; import 'package:webview_flutter/platform_interface.dart'; import 'package:webview_flutter/webview_flutter.dart'; import '../api/http.dart' as http; import '../ui/widget/nav.dart'; import '../utils/ui_utils.dart'; import '../utils/user_util.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) { print("onMessageReceived"); 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 "copyText": copyText(params); break; case "getUid": getUid(params, _callback); break; case "getAppName": getAppName(_callback); break; case "getRequestBaseParams": getRequestBaseParams(params, _callback); break; case "showRewardVideoAd": showRewardVideoAd(this.context, _callback); break; case "showLoading": showLoading(); break; case "hideLoading": hideLoading(); break; case "finishPage": finishPage(); break; case "saveImg": String url = params["url"]; ImageUtil.saveImg(url,context); break; case "shareImg": String url = params["url"]; String type = params["type"]; ImageUtil. shareImg(url, int.parse(type),context); break; } })); return list.toSet(); } callback(String method, var params, {bool finish = true}) { _controller!.runJavascript("$method('$params')"); if (finish) { _controller!.runJavascript("delete $method"); } } //获取用户ID getUid(var params, String? callbackName) { if (callbackName != null) { UserUtil.getUid().then((value) { callback(callbackName, value != null ? value.toString() : ""); }); } } //获取用户ID getAppName(String? callbackName) { // PackageInfo.fromPlatform().then((PackageInfo packageInfo) { if (callbackName != null) { callback(callbackName, packageInfo.appName); } }); } //toast toast(params) { if (params != null && params["msg"] != null) { ToastUtil.toast(params["msg"], context); } } copyText(params) { if (params != null && params["content"] != null) { Clipboard.setData(ClipboardData(text: params["content"])); } } //获取基本的网络请求参数 getRequestBaseParams(var params, String? callbackName) { var ps = {}; if (params != null) { ps.addAll(params); } http.HttpUtil.getBaseParams(params).then((value) { String result = jsonEncode(value); if (callbackName != null) { callback(callbackName, result); } }); } //展示激励视频 showRewardVideoAd(BuildContext context, String? callbackName) { // AdUtil.getAdInfo(context, AdPosition.vipReward).then((value) { // AdUtil.loadReward(value, (status, msg) { // switch (status) { // case RewardAdStatus.verify: // callback(callbackName!, 3, finish: false); // break; // case RewardAdStatus.ready: // callback(callbackName!, 1, finish: false); // break; // case RewardAdStatus.close: // callback(callbackName!, 10, finish: true); // break; // case RewardAdStatus.click: // callback(callbackName!, 2, finish: false); // break; // case RewardAdStatus.fail: // callback(callbackName!, 0, finish: true); // break; // } // }); // }); } showLoading() { http.showLoading(context); } hideLoading() { popPage(context); } //结束页面 finishPage() { popPage(context); } }