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

종마루님의 프로필 이미지

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

xxx

Login_Screen에서의 상태관리에 대한 질문입니다

24.08.16 21:32 작성

·

66

0

안녕하세요~ 강의를 다 듣고 나니 질문이 있습니다

login screen의 상태관리에 대한 질문인데요!

 

id, pw를 강의에서는 그냥

String username = '';
String password = '';

로 View내부에 선언하고

TextField의 onChanged를 통해서 저 값들을 변경하고

 

ref
    .read(userMeProvider.notifier)
    .login(username: username, password: password);

이런식으로 넘겨주었는데,

username, password 값도 상태관리를 하려면 또 이거에 관련된 프로바이더를 만들어야 하는건가요??

 

추가로 id, pw값에 따라 button을 enabled - disabled 시키려면 또 이거와 관련된 프로바이더를 추가로 만들어야 하는건가요??

 

이런식으로 하면 한 화면에서도 프로바이더가 굉장히 많이 만들어지게 되는데 이런 방식이 맞는지 궁금합니다..

또 그 화면에서만 쓰는데도 전역으로 프로바이더들이 굉장히 많이 선언될거같아요..

 

강의에서는 되게 굵직굵직한 data들을 전역 provider로 만들어서 굉장히 편했는데,

앱을 개발하다보면 그 화면에서만 필요한 데이터들도 많을거고 단순히 버튼 상태처럼 bool값도 엄청 많을텐데

 

추후 테스트를 위해서 로직을 분리하려면

이런것도 싹 다 프로바이더로 만들어야 하는것인가요..?

답변 2

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

2024. 08. 17. 10:06

안녕하세요!

굳이 전역으로 사용할 필요가 없다고 생각되면 StatefulWidget으로 만족하셔도 문제되지 않습니다.

프로젝트가 커질수록 상태관리도 많아지는건 당연합니다.

내가 해결하려는 문제가 정확히 어떤 문제인지 파악하고 작업을 진행하는게 중요합니다.

깔끔하게 상태관리를 하려는게 목적이라면 상태관리 코드가 조금 더 많아져도 감안 할 수 있습니다.

컴팩트한 프로젝트가 문제라면 StatefulWidget 사용등 다른 방식을 고민 해봐야합니다.

감사합니다!

0

인프런 AI 인턴님의 프로필 이미지

2024. 08. 16. 21:36

안녕하세요, 인프런 AI 인턴입니다.

님의 질문은 상태 관리와 관련된 개념적인 이해와 Flutter에서 상태 관리를 어떻게 효율적으로 구현할 수 있는지에 대한 심층적인 고민으로 이어지는 것 같습니다. 님께서 언급하신 내용에 따르면, 로그인 화면에서 사용자 이름과 비밀번호를 관리하는 방법과 그에 따른 버튼 활성화 상태 변화까지 상태 관리가 필요하다는 점을 다루고 있습니다. 이와 관련하여, 보다 체계적이고 효율적인 상태 관리 방법을 찾고 계신 것으로 보입니다.

Flutter에서 상태 관리는 앱의 규모와 복잡도가 커질수록 더욱 중요한 고려 사항이 됩니다. 님의 경우와 같이 한 화면에서만 사용되는 상태값들에 대해서는 전역 상태 관리 도구를 사용하기 보다는 해당 화면이나 위젯에 국한된 상태 관리 방법을 고려해 볼 수 있습니다. Provider와 같은 상태 관리 도구를 사용할 때, 전역적으로 사용되는 상태 외에도 화면이나 위젯 내부에서만 관리될 필요가 있는 상태들에 대해서는 더 세분화된 접근 방법을 적용할 수 있습니다.

관련 질문 링크변수 선언 위치 개념

  • 이 질문을 통해 Widget 내부와 외부에서 변수를 선언하는 기준에 대해 알 수 있습니다. 상태 관리의 개념과 화면 재구성 시의 고려 사항을 다루고 있으며, 이는 님의 질문과 연관이 있습니다.

이외에 아쉽게도 님의 질문에 직접적으로 맞닿은 해결 방안을 제시하는 구체적인 답변을 찾기는 어렵습니다. 그러나 상태 관리의 기초 개념을 잘 이해하고 적절한 상태 관리 도구의 선정 및 활용 방법에 대한 이해를 깊게 하시면, 님의 상황에 맞는 최적의 해결 방법을 찾으실 수 있을 것으로 생각됩니다.

Flutter에서 상태 관리 방법은 매우 다양하며, 각각의 방식은 그에 맞는 장단점을 가지고 있습니다. 강의 내에서 다룬 방법 외에도 Riverpod, Bloc, Mobx 등 다양한 상태 관리 라이브러리와 패턴이 존재하니, 해당 내용을 추가적으로 공부해 보시는 것도 좋을 것 같습니다.

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