인프런 커뮤니티 질문&답변

kimdajin514님의 프로필 이미지
kimdajin514

작성한 질문수

Flutter 중급 1편 - 클린 아키텍처

38 정렬 기능 작성

sealed class 데이터 접근

작성

·

182

0

38 강의 내용 관련입니다.

 

import 'package:json_annotation/json_annotation.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:note_app/domain/util/order_type.dart';

part 'note_order.freezed.dart';

@freezed
abstract class NoteOrder with _$NoteOrder {
  const factory NoteOrder.title(OrderType orderType) = NoteOrderTitle;
  const factory NoteOrder.date(OrderType orderType) = NoteOrderDate;
  const factory NoteOrder.color(OrderType orderType) = NoteOrderColor;
}

위의 코드는 타입 매칭을 위한 거기 때문에 아래와 같이 dart 에서 지원하는 sealed 클래스를 사용하는 방법으로 고쳤습니다.

 

import 'package:note_app/domain/util/order_type.dart';

sealed class NoteOrder<T> {
  const factory NoteOrder.title(OrderType orderType) = NoteOrderTitle;
  const factory NoteOrder.date(OrderType orderType) = NoteOrderDate;
  const factory NoteOrder.color(OrderType orderType) = NoteOrderColor;
}

class NoteOrderTitle<T> implements NoteOrder<T> {
  final OrderType orderType;
  const NoteOrderTitle(this.orderType);
}

class NoteOrderDate<T> implements NoteOrder<T> {
  final OrderType orderType;
  const NoteOrderDate(this.orderType);
}

class NoteOrderColor<T> implements NoteOrder<T> {
  final OrderType orderType;
  const NoteOrderColor(this.orderType);
}

 

 

order_section.dart 에서

Radio<NoteOrder>(
  value: NoteOrder.title(noteOrder.orderType),
  groupValue: noteOrder,
  onChanged: (NoteOrder? value) {
    onOrderChanged(NoteOrder.title(noteOrder.orderType));
  },
  activeColor: Colors.white,
),

dart 지원 sealed 클래스를 사용하면 noteOrder.orderType에 접근이 안 되는데 어떻게 수정해야 할까요?

답변 1

0

오준석님의 프로필 이미지
오준석
지식공유자

위에 코드만 봐서는 잘 모르겠네요.

일단, 기존 코드를 dart 제공 코드로 만들어도 되지만

기존 freezed 코드에서 abstract 떼고 sealed 넣어도 무방합니다.

kimdajin514님의 프로필 이미지
kimdajin514

작성한 질문수

질문하기