我想在http get失败时显示AlertDialog.函数showDialog(https://api.flutter.dev/flutter/material/showDialog.html)有参数"@Required BuildContext context",但是我想从我的异步函数getnews()调用AlertDialog,该函数没有上下文值.

与Java类似,我对没有所有者的对话框使用NULL,我试图将上下文值设置为NULL,但不被接受.

这是我的代码:

  Future<dynamic> getNews() async {
    dynamic retVal;
    try {
      var response = await http.get(url));
      if (response.statusCode == HttpStatus.ok) {
        retVal = jsonDecode(response.body);
      }
    } catch (e) {
      alertDlg(?????????, 'Error', e.toString());
  }
    return
    retVal;
  }

  static Future<void> alertDlg(context, String titolo, String messaggio) async {
    return showDialog<void>(
        context: context,
        barrierDismissible: false, // user must tap button!
        builder: (BuildContext context) {
        return AlertDialog(
              title: Text(titolo),
        ...
    );
  }

推荐答案

公认的答案是错误的.

该对话框只需要上下文即可通过继承的NavigateState访问它. 您可以制作自己的修改过的对话框,也可以使用My lib来完成此操作.

https://pub.dev/packages/get

使用它,您可以在没有上下文的情况下从代码中的任何位置打开对话框,方法是执行以下操作:

Get.dialog(SimpleDialog());

Flutter相关问答推荐

无法在GroupButton内部正确呈现

如何为Android 12及以上设备以及Android 11及以下设备动态处理Splash Screen?如果可能的话没有包裹

为什么Flutter InAppWebView中的DatePicker看起来很旧?

CMakeLists.txt处的CMake错误:3(项目)找不到指定的Visual Studio实例

在Flutter 中每次点击按钮时都很难调用自定义函数

来自FirebaseAuth的错误DisplayName和邮箱在Flutter应用程序中给出错误

在flutter web上渲染多个Youtube视频

如何翻转这种剪刀设计

flutter Listview构建器溢出

找不到任何与 com.google.firebase:firebase-sessions:[15.0.0, 16.0.0) 匹配的版本

Flutter:在 pubspec.yaml 中找不到assets资源

无法从一个页面导航到下一个页面 (Flutter)

graphql_flutter 错误:非抽象类GraphQLWebSocketChannel缺少实现

在 Flutter 中读取 Firebase 数据库数据时遇到问题

alert 对话框内的 ListView 显示空的透明窗口

容器在发布模式下显示灰色框(抖动)

statefulWidget 无法进行所需更改的问题

如何扫描来自给定链接或按钮的重定向中的所有 URL?

.info/connected 这两个代码之间有什么区别吗?

在 Flutter 中更改高架按钮 OnPressed 的背景 colored颜色