Retrofit Flutter不生成model-json转换方法

Retrofit Flutter does not generate model-json conversion method

我正在直接关注这个官方 guide,它显然没有生成 _$TaskFromJson_$TaskToJson 方法,

我已经把它放在 'task.dart' 文件中并修改 part 如下

task.dart

import 'package:json_annotation/json_annotation.dart';
import 'package:retrofit/retrofit.dart';
import 'package:dio/dio.dart';

part 'task.g.dart';

@RestApi(baseUrl: "https://5d42a6e2bc64f90014a56ca0.mockapi.io/api/v1/")
abstract class RestClient {
  factory RestClient(Dio dio, {String baseUrl}) = _RestClient;

  @GET("/tasks")
  Future<List<Task>> getTasks();
}

@JsonSerializable()
class Task {
  String id;
  String name;
  String avatar;
  String createdAt;

  Task(this.id, this.name, this.avatar, this.createdAt);

  factory Task.fromJson(Map<String, dynamic> json) => _$TaskFromJson(json);
  Map<String, dynamic> toJson() => _$TaskToJson(this);
}

我运行这个命令 flutter pub run build_runner build
但生成的部分仅如下所示,没有任何 _$TaskFromJson 也没有 _$TaskToJson

task.g.dart

// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'task.dart';

// **************************************************************************
// RetrofitGenerator
// **************************************************************************

class _RestClient implements RestClient {
  _RestClient(this._dio, {this.baseUrl}) {
    ArgumentError.checkNotNull(_dio, '_dio');
    this.baseUrl ??= 'https://5d42a6e2bc64f90014a56ca0.mockapi.io/api/v1/';
  }

  final Dio _dio;

  String baseUrl;

  @override
  getTasks() async {
    const _extra = <String, dynamic>{};
    final queryParameters = <String, dynamic>{};
    final _data = <String, dynamic>{};
    final Response<List<dynamic>> _result = await _dio.request('/tasks',
        queryParameters: queryParameters,
        options: RequestOptions(
            method: 'GET',
            headers: <String, dynamic>{},
            extra: _extra,
            baseUrl: baseUrl),
        data: _data);
    var value = _result.data
        .map((dynamic i) => Task.fromJson(i as Map<String, dynamic>))
        .toList();
    return Future.value(value);
  }
}

我读过 但对我没有帮助,因为这个问题谈论的是根本无法生成,但我的生成很好,缺少 JsonSerialized 方法。此外,答案建议使用大写 User 文件名,这绝对不起作用。

json_serializable 负责生成这些方法。只需将其导入您的 pubspec dev_dependencies 部分,运行 flutter pub getflutter pub run build_runner build.

依赖项: 扑: SDK: 颤动 cupertino_icons: ^1.0.2 记录器:任何 改装:任何 json_annotation:任意

dev_dependencies: flutter_test: SDK: 颤动 build_runner:任意 retrofit_generator:任意 json_serializable:任意

所有retrofit相关包都使用这个版本的包 肯定有用