已导入dart:async却无法找到Result类该如何解决
问题原因
dart:async核心库中从未内置Result类型,你对该类的来源认知错误是导入失败的根本原因,且你当前使用的>=2.7.0 <3.0.0版本Dart SDK也不支持后续版本新增的类似内置能力
解决方案
你可以根据自己的需求选择以下任意一种方案:
方案1:使用第三方result包
- 在项目
pubspec.yaml的dependencies节点下添加对应依赖:
dependencies: result: ^1.0.0 # 该版本兼容你当前的SDK版本
- 执行依赖拉取命令:纯Dart项目运行
pub get,Flutter项目运行flutter pub get - 在代码中导入该包即可使用Result类型:
import 'package:result/result.dart';
方案2:导入自定义的Result类
如果你项目内部已经封装过Result泛型类,只需要将错误的dart:async导入替换为你自己Result类所在文件的引用路径即可,示例:
// 替换成你自己的Result类路径 import 'package:your_project/utils/result.dart';
方案3:自定义实现Result类
如果你不想引入第三方依赖,可以自行实现轻量的Result泛型类,参考代码如下:
abstract class Result<T> { const Result(); factory Result.value(T data) = Success<T>; factory Result.error(Object err, [StackTrace? trace]) = Fail<T>; } class Success<T> extends Result<T> { final T data; Success(this.data); } class Fail<T> extends Result<T> { final Object error; final StackTrace? stackTrace; Fail(this.error, [this.stackTrace]); }
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

