0

我刚开始学习冻结。我在下面有一个 GameBase 类:


import 'package:json_annotation/json_annotation.dart';

part 'game_base.g.dart';

@JsonSerializable()
class GameBase {
  final int id;
  final String facilityName;
  final ActivityType activityType;
  final Level level;
  final DateTime startTime;
  final DateTime endTime;
  final int participantsNumber;
  final String admin;


  const GameBase(
      {required this.id,
      required this.level,
      required this.activityType,
      required this.admin,
      required this.startTime,
      required this.facilityName,
      required this.endTime,
      required this.participantsNumber});

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

现在我有另一个名为 Game 的类,它从 GameBase 扩展而来。我正在尝试在这堂课上使用 freezed 。我在这个班上也有一个吸气剂。游戏类如下图所示:

part 'game.freezed.dart';
part 'game.g.dart';

@freezed
class Game extends GameBase with _$Game {
  Game._();

  factory Game({
    required List<UserBase> participants,
    required String? gameDescription,
    required String? activityGroundsName,
    required DateTime day,
    required double lat,
    required double lng,
    required int id,
    required Level level,
    required ActivityType activityType,
    required String admin,
    required DateTime startTime,
    required String facilityName,
    required DateTime endTime,
    required int participantsNumber,
  }) = _Game;

  factory Game.fromJson(Map<String, dynamic> json) => _$GameFromJson(json);

  get facilityActivityText {
    if (activityGroundsName == null) {
      return facilityName;
    } else {
      return facilityName + " - " + activityGroundsName!;
    }
  }
}

因为我在这个类中有一个吸气剂,所以我必须有一个私有的 custructor,如冻结文档中所述。但是,这样做会出现错误,因为我从 GameBase 扩展并且必须使用其字段调用其构造函数。

*注意:我知道我可以将一个字段移到 GameBase,然后让我的 getter 没有任何问题,但是由于我刚刚开始使用 freezed 我想更好地理解它并找出是否有任何方法来处理这个?

4

0 回答 0