inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

GoRouter Redirection관련 질문이 있습니다..

259

임명훈

작성한 질문수 2

1

안녕하세요? 강사님,

중급강의 섹션 13. [Go Router v7] GoRouter 이론 중 "Redirection" 파트에 관련된 질문인데요.

 

9_login_screen.dart 파일(LoginScreen 클래스)에 코딩된 "authState"는

router.dart파일에 코딩된 "authState"와 어떤 관계(?)인지를 모르겠습니다.

 

무슨말인가 하면 authState 변수는 LoginScreen 클래스내에서 별도로 선언을 해주지도 않았는데도 setStat를 이용해서 값을 ture, false로 바꿀 수 있는 것도 이상하고,

이렇게 LoginScreen 클래스에서 변경된 authState값이 router.dart파일에서 인식(?)이 되는것도 이상합니다.

 

제 질문이 조금 무식해 보이긴 한데...

제 질문 의도는 파악하셨으리라 생각되어서 답변 좀 부탁드리겠습니다...

flutter 하이브리드-앱

답변 1

0

코드팩토리

안녕하세요!

이 부분은 영상에서도 설명 드렸는데 authState가 파일간 특별한 관련이 있는건 아닙니다.

authState는 인증 상태를 단순화하여 true/false로 표현한 변수입니다.

실제 상황을 만든다면 인증 시스템을 전부 구축해야하기 때문에 단순히 변수의 값이 true면 인증이 된 상태고 false 면 인증이 되지않은 상태라는 가정을 한겁니다.

말씀하신대로 authState는 setState()와 관련은 없습니다.

하지만 setState()를 실행하면 build() 함수가 재실행되고 authState가 토글 됨으로서 (true->false 또는 false -> true)

로그인 상태에 따른 UI 변경을 가져올 수 있습니다.

실제 상황을 구현한다면 모두 provider에 저장될 상태 값입니다.

혹시 설명이 부족하다면 댓글 부탁드립니다.

감사합니다!

0

임명훈

답변 감사합니다.. 그런데 여전히 조금 이해가 안가서요...

 

다름이 아니고 제 질문의 요지는,

LoginScreen클래스 내에서 bool authState = true 이런 식으로 선언하지 않았는데도

(bool authState = true 라고 선언하는 부분은 router.dart 파일에 코딩되어 있음)

LoginScreen클래스 내에서 setState()로 authState 값을 (true->false 또는 false -> true)로 바꿀 수 있는 것도 이상하고,

(보통은 setState()값을 바꿀 때 해당 되는 변수는 해당 클래스 내에서 선언이 먼저 되어 있었던 것 같아서요.)

그래서 우선 LoginScreen 클래스 내에서 authState가 정의 되지 않았는데도, setState() 그 값을 변경 할 수 있는게 이상하고,

그리고 또 이상한건 이렇게 LoginScreen 클래스 내에서 authState의 값이 변경된게 router.dart 파일에서 인식이 되어서 기존에는 이동이 안되었던 PrivateScreen으로 이동을 할 수 되는게 이상해서 문의 드렸습니다...

 

마치 느낌상 authState 값이 Provider로 관리되고 있어서,

LoginScreen과 router.dart파일을 넘나들고 있는듯한 느낌입니다...;;;;

 

제가 질문 드리면서 너무 초보적인 질문을 드리는 것 같다는 생각이 들기도 한데, 어찌되었건,

그동안 학습하면서 배웠던 상황하고는 조금 달라서 문의 드립니다....

0

코드팩토리

setState() 함수가 State 클래스 내부에 있는 값을 변경 할 수 있는 함수라고 인식하셔서 이해가 어려우신 것 같습니다.

setState() 함수는 특별한 함수가 아닙니다. '그냥 함수'입니다. 다트언어에 '특별한 함수'는 존재하지 않습니다. 초급 강의에서 설명드린 것 처럼 setState() 함수는 단순히 build() 함수를 재실행하는 역할을 합니다.

그렇기 때문에 말씀하신 코드의 역할은 authState 변수를 변경하고 setState() 함수를 재실해아는 역할을 할뿐입니다.

물론 State 클래스에 authState 변수를 선언할수도 있습니다. (이렇게 되면 이해가 좀 더 편하시겠죠) 하지만 그렇다면 다른 클래스에서 사용하기 어려워집니다 (커리큘럼 진행상). 그래서 글로벌 변수로 사용 했을 뿐입니다.

0

임명훈

말씀하신 것 처럼 제가 setState() 함수가 State 클래스 내부에 있는 값만 변경할 수 있는 거라는 고정관념에 빠져 있었던 것 같습니다.. 설명주신 내용 이해했고, 자세히 설명 주셔서 정말 감사합니다..

좋은 하루 되세요~

Isar 마지막 업데이트는 2년전입니다.

0

31

0

FlutterSecureStorage 질문

0

32

0

Dio onError Interceptor 만드는 부분에 질문이 있습니다.

0

80

2

관리자 기능에 대한 질문

0

100

2

part 'restaurant_model.g.dart';

0

92

1

36강. dio 인터셉터에 storage를 전달하는 코드가 이해 안되는데요. 도움 부탁드립니다.

0

56

2

2번 반환 상황 관련 질문

0

61

2

riverpod 3.0

0

140

2

Asset folder??

0

82

2

디자이너와 협업 시 프레임 크기 설정 관련 질문

0

114

2

FutureProvider, StateNotifierProvider 선택 기준

0

70

2

컴포넌트 모델화

0

64

2

쿼리 파라미터

0

84

2

화면 안보임

0

68

2

PaginationListView

0

54

1

강의중 37.Dio onErrorInterceptor 작업하기 dio 관련 질문입니다.

0

103

2

프로토타입이미지

0

62

2

여러 객체를 상태 관리하는 방법에 대한 질문

0

85

2

장바구니 결제하기 응답이 500이 옵니다.

0

105

2

removeFromBasket에서 await patchBasket()을 마지막에 하면 에러나는거 아닌가요?

0

67

2

이 두가지는 완전히 동일한 기능인가요?

0

106

3

내부 코드를 작성하지 않은 CursorPaginationLoading가 어떻게 로딩상태를 갖는지 잘 모르겠습니다...

0

77

2

_SplashScreenState에서 storage를 late로 호출해서 한번만 불러와도 되나요?

0

86

2

코딩 작성 순서 관련 질문

0

88

2