inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

34 노트 수정

편집 기능에서 색상 설정 질문

206

한석민

작성한 질문수 20

0

viewModel.onEvent(AddEditNoteEvent.changeColor(widget.note!.color));

initState에서 위의 코드를 넣어주었습니다. 하지만 initState에서 notifyListners()를 호출해서 그런지 state 오류가 발생합니다.

제 머리로 생각할 수 있는 대안은

changeColor에 파라미터로 isRebuild 라는 bool 값을 받아서

기본 값을 true 해놓고, true일 때만 notifyListeners가 호출되게 하였습니다.

이렇게 플래그를 주는게 좋은 방법일까요?

아니면 다른 키워드 주실 수 있을까요?

Flutter ios android

답변 1

0

오준석

플래그가 코드 복잡성을 올리는 것 같으니

가장 좋은 대안은 화면을 Navigation.push 하기 전에 ViewModel에 색깔을 지정한 후에 화면을 이동하면 되지 않을까요.

0

atomom

그 방법은 생각하지 못했었네요. 그러면

note_screen의 gestureDetector 부분에

final addEditNoteViewModelViewModel = context.read<AddEditNoteViewModel>();
addEditNoteViewModelViewModel.onEvent(AddEditNoteEvent.changeColor(note.color)); 

위의 2줄 코드를 추가해주면 될까요?

혹시 그러하다면 한 스크린에 이렇게 다른 viewModel을 호출해도 상관이 없을까요?

0

오준석

ViewModel 을 앱 전체에서 하나의 인스턴스만 가지는 싱글턴으로 사용하기 때문에 문제 없을 것 같습니다.

더 나은 방법은 화면 이동시마다 ChangeNotifierProvider 설정을 새로 하여 ViewModel이 항상 새롭게 생성되도록 하는 방법도 있겠습니다. 이 때 ViewModel 생성시 노트 컬러를 생성자로 전달하는 방법이겠지요.

0

한석민

감사합니다 ChangeNotifierProvider을 새로 설정하는 방법은 지금 어떻게 해야할지 떠오르지 않아서 좀 더 고민해보도록하겠습니다.

0

오준석

대략 이런 느낌으로 작성하면 매번 새로운 ViewModel을 생성하게 됩니다.

Navigator.push(
  context,
  MaterialPageRoute(builder: (context) =>
      ChangeNotifierProvider(
        create: (BuildContext context) {
          return MainViewModel(color);
        },
        child: NextScreen(),
      ),
  ),
);

0

한석민

라우트 안에서 생성할 생각을 못했네요 또 한 번 배웁니다 감사합니다 ㅠㅠ. 적용했습니다.

이제 이번에 나온 강의 들으러 가겠습니다.

좋은 강의 감사합니다. 유튜브에서 multipart 강의도 보고 유용하게 사용했습니다 !
좋은하루 되세요 ^^!

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

0

110

2

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

0

104

1

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

0

195

3

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

0

133

2

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

0

102

2

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

0

99

1

mockito사용시 오류 해결법

1

127

2

sealed class 사용 문의2

0

88

2

sealed class 사용 문의

0

123

2

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

0

275

2

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

0

246

2

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

1

332

3

강의 화면이 안보여요

0

142

3

Flutter에서 추천하는 Navigator, Router

0

335

2

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

0

331

3

event와 ui_event

0

217

1

코드 색깔 관련 질문

0

214

1

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

0

216

2

sealed class 적용 시...

0

337

1

클린 아키텍처 질문

0

317

1

sealed class 데이터 접근

0

333

1

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

0

239

1

뷰/뷰모델 작성 질문

0

277

1

freezed JsonKey 사용 예시 공유

1

797

1