상태관리되는 변수들의 위치에 대해
240
작성한 질문수 11
상태관리를 viewModel에서 거의 다 하시는 것 같은데 이번 강의에서는 screen 생성자로 Note를 넘겨주셨습니다.
다른 방식으로, notes_screen(목록화면)에서 노트를 클릭했을 때 ui 이벤트를 발생하여 add_edit_note_view_model에 note를 전달하고 그 값(viewModel의 note)을 add_edit_note_screen으로 전달 해서 사용 하는 것은 어떤가요?
생성자로 넘겨주는 것이 훨씬 편하긴 하나 screen에 변수를 선언 안해야 될 것 같은 생각이 들어서 고민에 빠집니다.
특정 screen으로 navaigator.push 될때마다 값이 특정 값으로 초기화를 해야되는 상황에서
viewModel에 값을 두고 viewModel을 계속 재성성하는지(강의에서는 노트를 새로 만들 때 배경색을 초기화하는 방법으로 설명),
혹은 viewModel을 하나만 생성하고 screen이 init 될때마다 viewModel의 특정 값을 초기화 해주는지(initState에서 이벤트 발생을 하여),
혹은 add_edit_note_screen의 note 변수처럼 선언해서 값을 초기화 하는지(viewModel 사용 안하는 방식)
강사님의 생각이 궁금합니다.
(첫번째 방식이 가장 간단하긴 하나 계속 생성된다는 것이 마음에 걸려서 2,3번째 방식을 생각하게 됐습니다.)
답이 없다는 것은 알고 있지만 어떤 것이 더 좋은 선택이고 좋은 코드가 될 수 있는지 계속 생각하게 되다보니 모호한 질문들을 하게 됐습니다.
덕분에 생각을 많이 하게 되고 플러터의 매력에 빠졌습니다.
감사합니다.
답변 1
1
보통 Detail 페이지에 생성자로 객체를 넘겨주는 것을 생각하면 Note도 넘겨주는 것 자체는 문제 없다고 생각합니다.
일단 TextEditingController 가 엮여 있어서 이 부분에 대해서는 저도 더 좋은 방법을 고민중입니다.
ViewModel에 담아서 넘기는 것도 괜찮은 방법입니다.
이 강의의 오류 중 하나가 편의상 모든 ViewModel 이 싱글턴으로 사용됩니다. 대부분의 경우 문제가 없지만
add_edit_note_view_model는 시나리오상 매번 새로 생성되어야 하는 것이 더 자연스럽습니다.
오프라인 수업에서 이 부분에 대해 수정한 코드를 깃헙의 gumsang_master 라는 브랜치에 반영해 두었습니다.
https://github.com/junsuk5/flutter-clean-architecture-course/tree/gumsang_master
화면 이동시 매번 새로운 뷰모델을 주입하도록 수정하였습니다.

다음 강의는 의존성 주입에 포커싱을 둔 강의를 계획 중이니 기대해 주세요.
0
다시 코드를 살펴보았는데요.
ViewModel 에 Note를 전달하는 식으로 수정을 했었네요.

궁극적으로 Screen 에서 Note를 받지 않도록 수정이 가능하겠네요. 오프라인 수업에서 이 부분은 학생들이 해 보도록 여지를 남겨두었던 것으로 기억합니다.
이 부분 수정을 해 보시고 더불어 gumsang_master 브랜치에 Pull Request 를 보내 주시는 것은 어떠신가요 ㅎㅎ
참고로 gumsang은 이 문제를 제기한 학생의 아이디입니다.
0
벌써 답변을 해주셨을 줄 몰랐네요.
viewModel에 데이터를 넘겨줄 생각을 미처 못했네요. 코드 수정한 후 Pull Request를 보내보겠습니다.
좋은 답변과 강의 감사합니다.
다음 강의도 많이 기대하겠습니다.
MVVM, 클린 아키텍처 관련 질문 있습니다.
0
87
2
가끔씩 ui가 깨지는? 현상이 있어서 질문드립니다.
0
95
1
freezed 3.0 대응된 코드 깃헙에도 업데이트 해주실 수 있으신가요?
0
183
3
sealed class 사용시 기능은 동작하지만 Radio위젯에 선택 표시가 안되는 부분 질문
0
124
2
sealed class 사용시 The getter 'orderType' isn't defined for the type 'NoteOrder<dynamic>' 오류
0
96
2
유즈케이스 관련하여 질문 드립니다.
0
93
1
mockito사용시 오류 해결법
1
123
2
sealed class 사용 문의2
0
78
2
sealed class 사용 문의
0
120
2
freezed3.0에서 build시 when생성되지 않습니다.
0
264
2
Try implementing the missing methods, or make the class abstract. 문제해결 공유
0
238
2
This is likely caused by a misconfigured builder definition. 오류 해결 방법
1
319
3
강의 화면이 안보여요
0
138
3
Flutter에서 추천하는 Navigator, Router
0
325
2
The following ProgressEvent object was thrown resolving an image codec: [object ProgressEvent]
0
325
3
event와 ui_event
0
212
1
코드 색깔 관련 질문
0
208
1
Photo.fleezed.dart,photo.g.dart삭제시 에러
0
206
2
sealed class 적용 시...
0
327
1
클린 아키텍처 질문
0
309
1
sealed class 데이터 접근
0
328
1
서버에서 데이터를 가져와서 사용하는 경우...
0
235
1
뷰/뷰모델 작성 질문
0
273
1
freezed JsonKey 사용 예시 공유
1
792
1





