Преобразование недопустимых типов json

Я использую замороженный, и мне нужно преобразовать класс в json.

Мой код выглядит так:

      import 'package:freezed_annotation/freezed_annotation.dart';

part 'key_state.freezed.dart';
part 'key_state.g.dart';

@freezed
class KeyState with _$KeyState {
  factory KeyState({
    CancelToken? token,
    // ...
  }) = _KeyState;

  factory KeyState.initial() => KeyState();

  factory KeyState.fromJson(Map<String, dynamic> json) =>
      _$KeyStateFromJson(json);
}

Это класс CancelToken https://github.com/flutterchina/dio/blob/master/dio/lib/src/cancel_token.dart

Это не работает.

Ошибки консоли выглядят так

Не удалось сгенерировать код для token. Чтобы поддержать тип CancelToken ты можешь:

Как мне это сделать?

1 ответ

Ошибка сообщает вам, что класс CancelToken нельзя напрямую преобразовать в JSON. Возможны следующие варианты:

  1. Создайте класс обслуживания, который вручную преобразует ваш класс KeyState в представление JSON.

  2. Создайте в проекте метод расширения для класса CancelToken, который добавляет к нему методы fromJson и toJson.https://dart.dev/guides/language/extension-methods

  3. Создайте форк кода из Github, самостоятельно добавьте методы преобразования в класс CancelToken и укажите свое репо в файле pubspec.yaml. (также отправьте запрос на перенос, чтобы объединить ваши изменения в исходное репо)

Вам также потребуется добавить аналогичные методы преобразования для зависимых типов, таких как DioError, RequestOptions, Response.

Другие вопросы по тегам