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<JavascriptChannel> getInterfaces() {
|
List<JavascriptChannel> 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);
|
}
|
}
|
}
|