在颤动中单击文本字段时 Webview 重新加载

问题描述 投票:0回答:1

当我单击文本字段时,网络视图会重新加载。我正在使用 webview_flutter: ^4.4.4 版本和 sdk: '>=3.1.0 <4.0.0' flutter sdk

 WebViewWidget(
      controller: WebViewController()
        ..setJavaScriptMode(JavaScriptMode.unrestricted)
        ..setBackgroundColor(const Color(0x00000000))
        ..setNavigationDelegate(
          NavigationDelegate(
            onNavigationRequest: (NavigationRequest request) {
              if (request.url.contains(returnURL)) {
                final uri = Uri.parse(request.url);
                final payerID = uri.queryParameters['PayerID'];
                if (payerID != null) {
                  Get.find<PricePlaningController>()
                      .executePayment(executeUrl, payerID, accessToken)
                      .then((id) {
                    widget.onFinish(id);
                    Navigator.of(context).pop();
                  });
                } else {
                  Navigator.of(context).pop();
                }
                Navigator.of(context).pop();
              }
              if (request.url.contains(cancelURL)) {
                Navigator.of(context).pop();
              }
              return NavigationDecision.navigate;
            },
          ),
        )
        ..loadRequest(
          Uri.parse(checkoutUrl),
        ),
    ),
android flutter dart paypal
1个回答
0
投票

发生这种情况是因为您在小部件树中初始化了

WebViewController
,因此每次重建都会重新初始化控制器。将控制器移动到包裹
StatefulWidget
WebViewWidget
的状态。

示例:

class MyWidget extends StatefulWidget {
  const MyWidget({super.key});

  @override
  State<MyWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  late final webViewController;

  @override
  void initState() {
    // ...

    webViewController = WebViewController()
      // additional setups ...
  }

  // ...
}

像这样使用控制器:

// Somewhere inside the build method of _MyWidgetState
WebViewWidget(
  controller: webViewController,
  // ...
)
© www.soinside.com 2019 - 2024. All rights reserved.