Не удалось сгенерировать код fromJson для контакта

Я использую замороженные для создания моделей. Моя модель содержит A Contactиз contacts_service и bool. Я следил за этим вопросом, но не могу найти способ решить сам. Я добавляю эти файлы.

Заранее спасибо.

класс модели

      import 'dart:convert';

import 'package:contacts_service/contacts_service.dart';

import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:flutter/foundation.dart';

// import 'custom_converter.model.json.dart';

part 'contact_profile.model.freezed.dart';
part 'contact_profile.model.g.dart';
part 'custom_converter.model.json.dart';

@freezed
class ContactProfile with _$ContactProfile {
  factory ContactProfile({
    required Contact contact,
    bool? isChecked,
  }) = _ContactProfile;

  factory ContactProfile.empty() => ContactProfile(
        contact: Contact(),
        isChecked: false,
      );

  factory ContactProfile.fromJson(Map<String, dynamic> json) =>
      ContactProfileFromJson();

  // static ContactProfile _customFromJson(Map<String, dynamic> json) {
  //   var jsonPayload = Map<String, dynamic>.from(json);

  //   if (jsonPayload["contact"] is Contact) {
  //     jsonPayload['contact'] = jsonDecode(jsonPayload["contact"]);
  //   }
  //   if (jsonPayload["isChecked"] is String) {
  //     jsonPayload["isChecked"] = jsonDecode(jsonPayload["isChecked"]);
  //   }

  //   return _$ContactProfileFromJson(jsonPayload);
  // }
}

Пользовательский конвертер, который я пробовал

      import 'dart:convert';

import 'package:contacts_service/contacts_service.dart';
import 'package:freezed_annotation/freezed_annotation.dart';

import 'contact_profile.model.dart';

part 'contact_profile.model.g.dart';

class ContactProfileFromJson
    implements JsonConverter<ContactProfile, Map<String, dynamic>> {
  @override
  ContactProfile fromJson(Map<String, dynamic> json) {
    var jsonPayload = Map<String, dynamic>.from(json);

    if (jsonPayload["contact"] is Contact) {
      jsonPayload['contact'] = jsonDecode(jsonPayload["contact"]);
    }
    if (jsonPayload["isChecked"] is String) {
      jsonPayload["isChecked"] = jsonDecode(jsonPayload["isChecked"]);
    }

    return _$ContactProfileFromJson(jsonPayload);

    // return ContactProfile(
    //   contact: Contact.fromMap(
    //     json["contact"],
    //   ),
    //   isChecked: json["isChecked"] ?? false,
    // );
  }

  @override
  Map<String, dynamic> toJson(ContactProfile contactProfile) => {};
}

0 ответов

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