redirectionLogic 에러관련 질문입니다
224
작성자 없음
작성한 질문수 0
안녕하세요 코드팩토리님! 좋은 강의 잘 듣고 있습니다. 현재 115강까지 수강한 상태이고 go_router.dart 파일 안에 redirectionLogic부분에 에러가 발생하였습니다. 강사님과 달리 현재 go router 7 버전을 사용하고 있습니다. 버전 차이로 인해 추가로 수정해야하는 부분이 있거나 혹은 제가 실수한 부분이 있다면 알려주시면 감사하겠습니다 :)
go_router.dart

auth_provider.dart
String? redirectLogic(GoRouterState state) {
final UserModelBase? user = ref.read(userMeProvider);
final logginIn = state.location == '/login';
if (user == null) {
return logginIn ? null : '/login';
}
// user is not null
// UserModel
// there is user information and
// user is logging in or at the SplashScreen,
// move on to home screen
if (user is UserModel) {
return logginIn || state.location == '/splash' ? '/' : null;
}
// UserModelError
if (user is UserModelError) {
return !logginIn ? '/login' : null;
}
return null;
}
코드 실행 시 발생한 에러 메시지 입니다

답변 2
0
안녕하세요!
강의에서 말씀 드린대로 redirectLogic의 시그니처가 변경 됐습니다.
에러 메세지에서 보여주는대로 GoRouterState 파라미터 하나를 받는게 아니라
BuildContext와 GoRouterState 두개를 받습니다.
함수 정의에서 파라미터 하나 추가 해주시면 됩니다.
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. skymin님의 질문에 답변 드리겠습니다.
질문자님이 겪고 계신 문제는 GoRouter 라이브러리의 버전 변경으로 인해 발생한 형태(Type) 불일치 오류로 보입니다. GoRouter 버전 7에서는 redirect 함수의 시그니처가 변경되어 이제 FutureOr<String?> Function(BuildContext, GoRouterState) 타입을 사용해야 합니다. 이는 원래 사용하던 단순한 String? Function(GoRouterState) 타입과는 달리, BuildContext를 첫 번째 파라미터로 받으며, FutureOr을 사용하여 연산을 비동기적으로 수행할 수 있도록 변화되었다는 것을 의미합니다.
기존 답변에서도 유사한 종류의 문제를 회원님들이 겪었으며, 강의를 업데이트하거나 redirect 함수의 시그니처를 새로운 시그니처에 맞게 변경하는 방식으로 해결했습니다. 해당 문제를 해결하기 위해 GoRouter 7.0 업데이트 강의 섹션을 참고하시거나, 아래의 기존 답변들에서 자세한 해결 방법을 확인해보실 수 있습니다.
- go_router.dart error(auth_provider내 redirectLogic) - 답변에서는
redirect함수 앞에BuildContext context를 추가함으로써 해결한 사례가 나와 있습니다.
- go Router redirect 에러 - 코드팩토리 강사님께서 새로운
redirect함수의 시그니처에 대해 설명하시며, 새로운 버전에 맞게 코드를 수정하는 방법을 제시하셨습니다.
위의 정보를 바탕으로, auth_provider.dart 내에 정의된 redirectLogic 함수의 시그니처를 다음과 같이 변경하실 수 있습니다:
FutureOr<String?> redirectLogic(BuildContext context, GoRouterState 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





