首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter/Dart:冻结数据类的子类

Flutter/Dart:冻结数据类的子类
EN

Stack Overflow用户
提问于 2020-08-06 22:07:53
回答 1查看 2.3K关注 0票数 11

我正在使用以下插件:https://pub.dev/packages/freezed

我想创建一个冻结数据类的子类,以便在我的数据层中提供额外的功能。所以我有一个数据类,如下所示:

代码语言:javascript
复制
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方法、值相等……但我不知道该怎么做。我正在尝试这样的东西:

代码语言:javascript
复制
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>,
      );
}

这将抛出以下错误:

代码语言:javascript
复制
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()方法:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-09 04:52:56

Freezed目前不支持继承,所以建议使用组合,而不是创建者在这里提到的继承:

https://github.com/rrousselGit/freezed/issues/464

并在帖子的评论中。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63285384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档