我有这个对象:
abstract class ApiData<T> implements Built<ApiData<T>, ApiDataBuilder<T>> {
int get offset;
int get limit;
int get total;
int get count;
BuiltList<T> get results;
ApiData._();
factory ApiData([void Function(ApiDataBuilder<T>) updates]) = _$ApiData<T>;
static Serializer<ApiData> get serializer => _$apiDataSerializer;
}
这是我用来将响应的动态结果映射到ApiData
对象的代码:
Future<ApiData<T>> mapDynamic<T>(dynamic value) async {
return standardSerializers.deserializeWith<ApiData<T>>(
ApiData.serializer,
value,
);
}
但我最终得到了这个错误:type '_$ApiDataSerializer' is not a subtype of type 'Serializer<ApiData<MyBuitValueAbstractObject>>'
我试图添加:
static Serializer<ApiData<MyBuitValueAbstractObject>> get apiMyObjectSerializer => _$apiDataMyObjectSerializer;
但这没有用。如何正确反序列化我的results
值
编辑 1 - 如果我使用standardSerializers.deserializeWith<ApiData>
(没有<T>
这个时间)我得到这个消息错误:
未处理的异常:反序列化'[offset,0,limit,20,total,2233,count,20,结果,[{...'到'ApiData'失败,原因是:反序列化'[{...'到'BuiltList'失败的原因是:无效的参数:反序列化时的类型未知。需要指定类型或鉴别器字段。
如何指定“鉴别器字段”的东西?
编辑 2 - 我现在找到了一个可以解决它的黑客,它不满足我,但我可以继续工作,直到找到合适的解决方案:https ://github.com/google/built_value.dart/issues/368#问题comment-486567646