Пожалуйста, переместите методы _dataFromJson
& _dataToJson
за пределы класса ApiResponseBaseModel<T>
.
Пример:
import 'package:json_annotation/json_annotation.dart';
import 'api_response_message_model.dart';
part 'api_response_base_model.g.dart';
@JsonSerializable()
class ApiResponseBaseModel<T> {
@JsonKey(fromJson: _dataFromJson, toJson: _dataToJson)
T data;
ApiResponseMessageModel message;
ApiResponseBaseModel({this.data, this.message});
factory ApiResponseBaseModel.fromJson(Map<String, dynamic> json) =>
_$ApiResponseBaseModelFromJson(json);
}
T _dataFromJson<T>(Map<String, dynamic> input) =>
input['value'] as T;
Map<String, dynamic> _dataToJson<T>(T input) =>
{'value': input};
Я сам попробовал, работает! Сгенерированные методы выглядят так:
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'api_response_base_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
ApiResponseBaseModel<T> _$ApiResponseBaseModelFromJson<T>(
Map<String, dynamic> json) {
return ApiResponseBaseModel<T>(
data: _dataFromJson(json['data'] as Map<String, dynamic>),
message: json['message'],
);
}
Map<String, dynamic> _$ApiResponseBaseModelToJson<T>(
ApiResponseBaseModel<T> instance) =>
<String, dynamic>{
'data': _dataToJson(instance.data),
'message': instance.message,
};
Надеюсь, это поможет!