Files
huangguo_android/lib/hj_page/web_page/h5_logic.dart
T
2026-09-15 15:44:13 +07:00

56 lines
1.7 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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);
}
},
);
}
}