代码之家  ›  专栏  ›  技术社区  ›  calin24

不要在同步间隙中使用BuildContext,即使我检查了context.mounted[重复]

  •  0
  • calin24  · 技术社区  · 11 月前

    我使用的是flutter 3.22.3和Dart 3.4.4,我的编辑器仍然警告我上下文。。。即使我检查上下文是否已挂载。

    我有一个辅助函数showToastMessage和异步间隙:

    void showToastMessage(BuildContext context, String message) {
        ScaffoldMessenger.of(context).clearSnackBars();
        ScaffoldMessenger.of(context).showSnackBar(
            SnackBar(content: Text(message))
        );
    }
    
    // somewere in the code an async func
    
    void _submit async {
        ...
        var result = await CallAPi().postData(data, '/login');
        
        ...
        
        // check the context !!!
        if (context.mounted) {
            showToastMessage(context, result.message); // it still complains about the context "Don`t use BuildContext across async gaps ...."
        }
    }
    

    我正在检查文档中的上下文。。。。那为什么我仍然收到警告????

    我错过了什么?

    1 回复  |  直到 11 月前
        1
  •  1
  •   Munsif Ali    11 月前

    现在,在flutter的新版本中,您可以使用 mounted 直接在里面 StatefulWidget

    而不是使用

    if (context.mounted) {
      pop(context);
    }
    

    使用

    if (mounted) {
      pop(context);
    }
    

    您可以在使用时查看详细信息 context.mounted 安装 在这里: use_build_context_synchronously