初始化
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:hgdj/hj_page/mine/mine_vip/pay_order_source.dart';
|
||||
import 'package:hgdj/routers/jump_router.dart';
|
||||
|
||||
class H5Logic extends GetxController {
|
||||
// ========== 属性声明 ==========
|
||||
final String? url;
|
||||
|
||||
H5Logic({this.url});
|
||||
|
||||
InAppWebViewController? webViewCtr;
|
||||
|
||||
// url 兜底空字符串,防 null 强解包崩溃
|
||||
URLRequest get initialUrlRequest => URLRequest(url: WebUri(url ?? ''));
|
||||
|
||||
// ========== 公开方法 ==========
|
||||
void onWebViewCreated(InAppWebViewController controller) {
|
||||
webViewCtr = controller;
|
||||
_setupHandlers(controller);
|
||||
}
|
||||
|
||||
// ========== 私有方法 ==========
|
||||
// 注册 H5 与 native 的 JS 桥
|
||||
void _setupHandlers(InAppWebViewController controller) {
|
||||
controller.addJavaScriptHandler(
|
||||
handlerName: 'prizeBack', callback: (_) => Get.back());
|
||||
controller.addJavaScriptHandler(
|
||||
handlerName: 'shopBack', callback: (_) => Get.back());
|
||||
// 跳金币充值
|
||||
controller.addJavaScriptHandler(
|
||||
handlerName: 'shopCharge',
|
||||
callback: (_) => pushToWalletPage(
|
||||
tabPosition: 1, sourcePage: PaySourcePage.h5Activity),
|
||||
);
|
||||
// H5 触发外部链接跳转
|
||||
controller.addJavaScriptHandler(
|
||||
handlerName: 'jumpOutLink',
|
||||
callback: (args) {
|
||||
if (args.isNotEmpty && args[0] is String) {
|
||||
pushToPageByLink(args[0] as String);
|
||||
}
|
||||
},
|
||||
);
|
||||
// H5 触发:直接跳系统外部浏览器(callHandler('openOutLink', url))
|
||||
controller.addJavaScriptHandler(
|
||||
handlerName: 'openOutLink',
|
||||
callback: (args) {
|
||||
if (args.isNotEmpty && args[0] is String) {
|
||||
launchUrlToWeb(args[0] as String);
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user