我得到以下错误:

Error: The argument type 'Future<void> Function({bool success})' can't be assigned to the parameter type 'void Function({bool success})' because 'Future<void> Function({bool success})' is nullable and 'void Function({bool success})' isn't.

在try 使用我的回调时. 我得到了这个函数:

static Future<void> showConfirmationModal({
    required BuildContext context,
    required void Function({bool success}) callback,
  }) async {
    // doing stuff
    callback(true);
}

我这样调用它:

OverlayModal.showConfirmationModal(
  context: context,
  callback: ({required bool success}) async {
    if (success) {
      // do stuff
    }
  },
);

如果我不命名Success参数并像这样做,它就会起作用 required void Function(success) callback,... 和callback: (bool success) async {}

但是,因为我的林特告诉我应该对bool使用命名参数,所以我想要更改它,但从那时起就遇到了这个错误.

我做错了什么?为什么它说,我的回调可以为空?

推荐答案

问题是因为你把它定义为

static Future<void> showConfirmationModal({
    required BuildContext context,
    required void Function({bool success}) callback,
  }) async {
    // doing stuff
    callback(success: true);
}

你说,callback必须考虑到成功是可选的.如果使用带有required子句的回调,它将不起作用,因为想象一下,如果showConfirmationModal的主体改为这样

static Future<void> showConfirmationModal({
    required BuildContext context,
    required void Function({bool success}) callback,
  }) async {
    // doing stuff
    callback();
}

它不会与你所说的东西一起工作.因此,要解决的问题是使其成为参数要求中的必填项,如下所示

static Future<void> showConfirmationModal({
    required BuildContext context,
    required void Function({required bool success}) callback,
  }) async {
    // doing stuff
    callback(success: true);
}

Flutter相关问答推荐

在Flutter中为不受约束的小部件制作动画

Flutter ReorderableListView在可滚动父级中无法完美工作

如何解决这个错误,同时获得的高度的小部件,因此高度的可用工作区域在Flutter ?

在Riverpod ConsumerWidget中使用文本编辑控制器

如何在用Ffltter成功登录后重定向下一页?

无法在仿真器上运行Flutter 项目-文件名太长错误

当 Dart SDK 版本范围不匹配时,为什么依赖解析器不会抛出错误?

flutter Listview构建器溢出

了解多Provider 和流

在 Flutter 中使用条件语句设置 ImageProvider Object 类型的背景图像

如何设置行中项目之间的空格相等?

当项目较少时收缩列表视图

如何在两个不同的路由(屏幕)之间正确设置 BlocProvider?

为什么将 bloc 提供程序放在单独的文件/类中会引发错误?

通过点击缩略图加载全屏图像

如何从 showModalBottomSheet 中的 topRight 和 topLeft 移除平边

单元测试中如何比较NaN和NaN是否相等

Flutter - 异步文件读取异常处理

Flutter:滚动一个ListWheelScrollView,无法获取选中项的状态

从 Uint8List 或图像对象创建 InputImageData 用于 Google ML Kit 人脸检测