코드를 먼저.
https://dartpad.dev/?id=b2d46f51f0e0911e703e997e678452d4
다이얼로그 같은 것은 애매하다.
다이얼로그 말고도 TextEditController 나 FocusNode, showSnackbar 등등 어디에 놓을지 애매한 것들이 많이 있다.
어디에 뷰 모델과 뷰의 경계선을 그을 것인지는 어느 정도는 취향의 영역이지만, 약간 생각해볼 점들이 있다.
여러 가지 자료들을 본 결과, 내가 내린 결론은 flutter sdk 에 의존성이 필요한 코드 (ex. showDialog(), show~~, ~~controller) 같은 것은 뷰에 두는 방식이다. Stateful 을 사용하더라도 말이다.
PhotoBooth 예시
https://github.com/flutter/photobooth/blob/e23be72f669b2581490202169cc1c2b157e2c165/lib/photobooth/view/photobooth_page.dart#L48
textcontroller 의 위치
https://github.com/felangel/bloc/issues/2293#
form
https://github.com/blado-runnero/flutter_form_validations_with_streams/blob/main/lib/main.dart
bloc 의 경우 BlocListener 로 간단히 해결 가능하고,
get도 비슷하게 할 수 있다.
바닐라 플러터에서는 StreamBuilder 나 ValueChangedListener 같은 것으로 연결하면 된다.
중요한 것은 둘 사이는 데이터만 주고 받는 정도로 커플링 레벨을 유지하는 것이다. https://en.wikipedia.org/wiki/Coupling_(computer_programming)