56 lines
1.7 KiB
Dart
56 lines
1.7 KiB
Dart
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);
|
||
}
|
||
},
|
||
);
|
||
}
|
||
}
|