|
|
@@ -1,11 +1,12 @@
|
|
|
+import 'package:atmob_logging/atmob_logging.dart';
|
|
|
import 'package:flutter/material.dart';
|
|
|
+import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
|
|
import 'package:get/get.dart';
|
|
|
import 'package:location/resource/assets.gen.dart';
|
|
|
import 'package:location/resource/colors.gen.dart';
|
|
|
import 'package:location/resource/string.gen.dart';
|
|
|
-import 'package:webview_flutter/webview_flutter.dart';
|
|
|
|
|
|
class AlipayQrCodeDialog {
|
|
|
static const String _tag = 'AlipayQrCodeDialog';
|
|
|
@@ -38,7 +39,7 @@ class AlipayQrCodeView extends Dialog {
|
|
|
VoidCallback? loadSuccessCallback;
|
|
|
VoidCallback? onCloseCallback;
|
|
|
|
|
|
- final WebViewController webViewController = WebViewController();
|
|
|
+ InAppWebViewController? webViewController;
|
|
|
|
|
|
AlipayQrCodeView(
|
|
|
{super.key,
|
|
|
@@ -62,25 +63,25 @@ class AlipayQrCodeView extends Dialog {
|
|
|
SizedBox(
|
|
|
width: 220.w,
|
|
|
height: 220.w,
|
|
|
- child: WebViewWidget(
|
|
|
- controller: webViewController
|
|
|
- ..loadHtmlString(getHtmlTemplate())
|
|
|
- ..setJavaScriptMode(JavaScriptMode.unrestricted)
|
|
|
- ..setNavigationDelegate(NavigationDelegate(
|
|
|
- onPageFinished: (String url) {
|
|
|
- // 使用 CSS 放大页面内容
|
|
|
- final scaleFactor = Get.width / 45.w;
|
|
|
- webViewController.runJavaScript('''
|
|
|
- document.body.style.transform = "scale($scaleFactor)";
|
|
|
- document.body.style.transformOrigin = "0 0";
|
|
|
-
|
|
|
+ child: GestureDetector(
|
|
|
+ behavior: HitTestBehavior.translucent,
|
|
|
+ child: InAppWebView(
|
|
|
+ initialData:
|
|
|
+ InAppWebViewInitialData(data: getHtmlTemplate()),
|
|
|
+ onPageCommitVisible: (controller, url) {
|
|
|
+ ALog.d("lzplzp", "onPageCommitVisible ${url?.host}");
|
|
|
+ if (url?.host.contains("alipay.com") ?? false) {
|
|
|
+ loadSuccessCallback?.call();
|
|
|
+ final scaleFactor = Get.width / 40.w;
|
|
|
+ controller.evaluateJavascript(source: '''
|
|
|
+ document.body.style.transform = "scale($scaleFactor)";
|
|
|
+ document.body.style.transformOrigin = "0 0";
|
|
|
document.body.style.touchAction = 'none';
|
|
|
document.documentElement.style.overscrollBehavior = 'none';
|
|
|
- ''');
|
|
|
- loadSuccessCallback?.call();
|
|
|
- loadSuccessCallback = null;
|
|
|
- },
|
|
|
- )),
|
|
|
+ ''');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ ),
|
|
|
),
|
|
|
),
|
|
|
SizedBox(height: 16.w),
|