【问题标题】:Don't use 'BuildContext' across async gaps around showDialog in Flutter不要在 Flutter 中围绕 showDialog 的异步间隙使用 \'BuildContext\'
【发布时间】:2023-02-09 02:17:34
【问题描述】:

我在 InAppWebView 小部件内的每个 showDialog 小部件周围的 flutter 项目中收到此警告。如何解决这个问题?

 return InAppWebView(
 ...
   onLongPressHitTestResult: (controller, hitTestResult) async {
        if (LongPressAlertDialog.hitTestResultSupported
            .contains(hitTestResult.type)) {
          var requestFocusNodeHrefResult =
              await _webViewController?.requestFocusNodeHref();

          if (requestFocusNodeHrefResult != null) {
//Don't use 'BuildContext' across async gaps
            showDialog(
              context: context,
              builder: (context) {
                return LongPressAlertDialog(
                  webViewModel: widget.webViewModel,
                  hitTestResult: hitTestResult,
                  requestFocusNodeHrefResult: requestFocusNodeHrefResult,
                );
              },
            );
          }
        }
      },
}

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    尝试这个:

    if (requestFocusNodeHrefResult != null && context.mounted) { // <=== add this
        showDialog(
          context: context,
          builder: (context) {
            return LongPressAlertDialog(
              webViewModel: widget.webViewModel,
              hitTestResult: hitTestResult,
              requestFocusNodeHrefResult: requestFocusNodeHrefResult,
            );
          },
        );
      }
    

    【讨论】:

      猜你喜欢
      • 2023-01-15
      • 2021-10-22
      • 2023-02-19
      • 1970-01-01
      • 1970-01-01
      • 2020-09-05
      • 2022-08-13
      • 2022-12-31
      • 2022-07-17
      相关资源
      最近更新 更多