Flutter / Dart: создать подкласс класса замороженных данных - PullRequest
2 голосов
/ 06 августа 2020

Я использую следующий плагин: https://pub.dev/packages/freezed

Я хочу создать подкласс замороженного класса данных, чтобы обеспечить дополнительную функциональность на моем уровне данных. Итак, у меня есть класс данных, который выглядит так:

import 'dart:ui';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'card.freezed.dart';

@freezed
abstract class Card with _$Card {
  factory Card({String text, Color color, List<String> categories}) = _Card;
}

Теперь я хочу, чтобы этот класс Card был суперклассом для моей CardModel, чтобы CardModel имел доступ к тем же полям, методу copyWith, value равенство, ... Но я понятия не имею, как go об этом. Я пробую что-то вроде этого:

import 'package:flutter/widgets.dart';
import 'package:growthdeck/features/card_deck/domain/entities/card.dart';

import '../../domain/entities/card.dart';

abstract class CardModel extends Card {
  factory CardModel.fromMap(Map<String, dynamic> card) => Card(
        text: card["text"],
        color: Color(int.parse(card['color'])),
        categories: card['categories'] as List<String>,
      );
}

При этом возникает следующая ошибка:

package:growthdeck/features/card_deck/data/models/card_model.dart 11:9  new CardModel.fromMap
test/features/card_deck/data/models/card_model_test.dart 13:23          main.<fn>

type '_$_Card' is not a subtype of type 'CardModel' in type cast

Есть ли способ сделать это правильно? Моим обходным решением было бы просто «обернуть» класс Card внутри CardModel и предоставить метод toCard (), который не очень элегантен: S

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...