flutter - Cating 异常在颤振中出现错误。参数类型“对象”不能分配给参数类型“异常”
问题描述
我是颤振的新手。Flutter 版本为 2.5.0
我有一个名为 SubmissionFailed 的类。
class SubmissionFailed extends FormSubmissionStatus {
final Exception exception;
SubmissionFailed(this.exception);
}
当我尝试在 try/catch 块中调用此类时,它会出错。
错误是:参数类型“对象”不能分配给参数类型“异常”
这是 try/catch 块:
我不明白有什么问题?
解决方案
这是因为参数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));
}
推荐阅读
- android - NavController 添加片段而不是替换而不使用 Dialog
- css - 如何让子 div 填充父 div 在 CSS 中保持父填充?
- flutter - Flutter futurebuilder嵌套期货返回null
- javascript - 无法直接在子组件中访问道具
- sql - 当有些人没有中间名时,在 SQL 中连接名字、中间名和姓氏
- javascript - 正则表达式查找 XML 标记之外的任何符号
- swiftui - SwiftUI 2.0 防止在每次正文刷新时重新加载静态图像
- swiftui - 当 Enum 中的值随 SwiftUI 发生变化时如何更新视图?
- scala - 在scala中有两个变量的for循环
- tensorflow - TFRecordDataset 和 FixedLengthRecordDataset 有什么区别?