我正在开发一个 Flutter 项目并使用了 Freezed 包。我创建了一个通用的 ApiResult 类,如下所示:
import 'package:freezed_annotation/freezed_annotation.dart';
part 'api_result.freezed.dart';
@freezed
sealed class ApiResult<T> with _$ApiResult<T> {
const factory ApiResult.success(T data) = Success<T>;
const factory ApiResult.failure(String msg) = Failure<T>;
}
运行代码生成后,生成的文件不包含 when、map 或类似的模式匹配方法。以下是生成代码的片段:
class Success<T> implements ApiResult<T> {
const Success(this.data);
final T data;
// ...
}
class Failure<T> implements ApiResult<T> {
const Failure(this.msg);
final String msg;
// ...
}
如你所见,没有生成 when 或 map 方法。我原本以为它们应该可用,因为它们通常与冻结类一起用于模式匹配。
为什么缺少 when 和 map 方法?该如何修复?
我正在使用最新版本的freezed和build_runner,然后运行
dart run build_runner build --delete-conflicting-outputs
没有任何问题。任何帮助都将不胜感激!