inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

26 첫 번째 ViewModel 작성

freezed3.0에서 build시 when생성되지 않습니다.

308

mhlee

작성한 질문수 15

0

freezed: ^3.0.6
freezed_annotation: ^3.0.0

 

으로 진행후 notes_event.freezed.dart 파일에 when, map

생성되지 않습니다.

 

sealed도 써보고 

abstract를 지우고 해도 마찬가지 인데 혹시 방법이 있을까요?

 

 

코드 내용

import 'package:flutter_note_app/domain/model/note.dart';

import 'package:freezed_annotation/freezed_annotation.dart';

part 'notes_event.freezed.dart';

@freezed

sealed class NotesEvent with _$NotesEvent {

const factory NotesEvent.loadNotes() = LoadNotes;

const factory NotesEvent.deleteNote(Note note) = DeleteNote;

const factory NotesEvent.restoreNote() = RestoreNote;

}

 

 

image.png

 -------------------------------------------

freezed 3.0.0 변경점 로그

3버전부터 삭제가 되었군요. 인터넷에 when사용관련으로 옵션 등등 찾아서 했지만 모두 생성이 안되었습니다. 이제 when은 사용하지 않는게 좋을것 같습니다.

 

image.png

 

import 'package:flutter_note_app/presentation/notes/notes_event.dart';

void handleEvent(NotesEvent event) {

switch (event) {

case LoadNotes():

print("Loading notes...");

break;

case DeleteNote():

print("Deleting");

break;

case RestoreNote():

print("Restoring note");

break;

}

}
dart3.0 부터 swich문이 추천이라고하네요!

 

 

선생님 Flutter Live Templeate 쪽에도 올라왔네요 템플릿 참고해주세요!

https://gravel-pike-705.notion.site/Flutter-Live-Templeate-579bac3070754bdf8fa10afe4ebe8c92

flutter ios android

답변 2

0

오준석

네. 공유해 주신대로 when 은 삭제가 되었습니다. switch 를 쓰는 것이 권장사항입니다.

https://youtu.be/Cl9FcNNbiu8?si=V1XLQF7DczvwPw3X&t=186

0

mhlee

감사합니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. mhlee님께서 언급해주신 문제는 freezed 패키지의 특정 버전에서 when과 map 메서드가 자동으로 생성되지 않는 상황에 대한 문의입니다. 이러한 기능들이 작동하지 않는다면, 다음과 같은 사항들을 점검해보실 수 있습니다.

문제 원인 및 해결 방법

  1. Freezed 패키지 설정 확인:

    • freezed와 freezed_annotation 패키지의 의존성 버전이 서로 맞지 않으면 제대로 작동하지 않을 수 있습니다. 두 패키지의 버전이 호환되는지 재확인하세요.
  2. 업데이트 및 캐시 클리어:

    • flutter clean 명령어로 빌드 캐시를 정리한 후 다시 flutter pub get을 실행해 보세요. 그런 다음 flutter pub run build_runner build 명령을 실행해 파일을 재생성합니다.
  3. 코드 수정 제안:

    • sealed class와 abstract class 사용에 관해 점검이 필요합니다. Freezed에서 abstract 대신 sealed를 사용하도록 업데이트되었으므로 코드에서 abstract를 제거하고 sealed를 추가해보세요.
    • 아울러, 각 팩토리 메서드가 const로 선언되어 있어서 이는 변경이 필요없으나 코드 전체에서 일관성을 유지하는 것이 중요합니다.

예를 들면, 다음과 같이 코드를 수정할 수 있습니다:

import 'package:flutter_note_app/domain/model/note.dart';
import 'package:freezed_annotation/freezed_annotation.dart';

part 'notes_event.freezed.dart';

@freezed
class NotesEvent with _$NotesEvent {
  const factory NotesEvent.loadNotes() = LoadNotes;
  const factory NotesEvent.deleteNote(Note note) = DeleteNote;
  const factory NotesEvent.restoreNote() = RestoreNote;
}

이와 유사한 문제가 언급된 게시물은 다음과 같습니다:
- g.dart 파일이 생성이 안됩니다.: 이는 오타로 인한 문제 해결 방법을 다룹니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

MVVM, 클린 아키텍처 관련 질문 있습니다.

0

150

2

가끔씩 ui가 깨지는? 현상이 있어서 질문드립니다.

0

128

1

freezed 3.0 대응된 코드 깃헙에도 업데이트 해주실 수 있으신가요?

0

245

3

sealed class 사용시 기능은 동작하지만 Radio위젯에 선택 표시가 안되는 부분 질문

0

157

2

sealed class 사용시 The getter 'orderType' isn't defined for the type 'NoteOrder<dynamic>' 오류

0

130

2

유즈케이스 관련하여 질문 드립니다.

0

128

1

mockito사용시 오류 해결법

1

152

2

sealed class 사용 문의2

0

118

2

sealed class 사용 문의

0

157

2

Try implementing the missing methods, or make the class abstract. 문제해결 공유

0

286

2

This is likely caused by a misconfigured builder definition. 오류 해결 방법

1

381

3

강의 화면이 안보여요

0

177

3

Flutter에서 추천하는 Navigator, Router

0

369

2

The following ProgressEvent object was thrown resolving an image codec: [object ProgressEvent]

0

382

3

event와 ui_event

0

242

1

코드 색깔 관련 질문

0

243

1

Photo.fleezed.dart,photo.g.dart삭제시 에러

0

243

2

sealed class 적용 시...

0

360

1

클린 아키텍처 질문

0

346

1

sealed class 데이터 접근

0

354

1

서버에서 데이터를 가져와서 사용하는 경우...

0

261

1

뷰/뷰모델 작성 질문

0

301

1

freezed JsonKey 사용 예시 공유

1

816

1

아이폰에서 APP 실행 안되는 현상

0

707

1