首页 > 解决方案 > Cating 异常在颤振中出现错误。参数类型“对象”不能分配给参数类型“异常”

问题描述

我是颤振的新手。Flutter 版本为 2.5.0

我有一个名为 SubmissionFailed 的类。

class SubmissionFailed extends FormSubmissionStatus {
  final Exception exception;

  SubmissionFailed(this.exception);
}

当我尝试在 try/catch 块中调用此类时,它会出错。

错误是:参数类型“对象”不能分配给参数类型“异常”

这是 try/catch 块:

在此处输入图像描述

我不明白有什么问题?

标签: flutterflutter-dependencies

解决方案


这是因为参数exception在 catch 块声明中没有类型,所以 Flutter 通过将其视为 Object 类型来保证它的安全。为什么?就像在 Java 中一样,如果没有定义扩展类,Dart 中的所有类都会自动扩展 Object 类。基本上,Dart 中的每个类都(直接或间接)继承自 Object。

构造SubmissionFailed函数有一个 type 参数Exception,这意味着您不能传递Object任何其他类型,它必须是Exception类型。

要解决这个问题,只需像这样投射它:

try {
  // code
} catch (exception) {
  yield state.copyWith(formStatus: SubmissionFailed(exception as Exception));
}

推荐阅读