해결된 질문
작성
·
258
0
final routerProvider = Provider<GoRouter>((ref) {
// watch - 값이 변경될때마다 다시 빌드
// read - 한번만 읽고 값이 변경돼도 다시 빌드 하지 않음
final provider = ref.read(authProvider);
return GoRouter(
routes: provider.routes,
initialLocation: '/splash',
refreshListenable: provider,
redirect: (context, state) => provider.redirectLogic(context, state), /
);
});
void main() {
runApp(
ProviderScope(
child: _App(),
),ㅇ
);
}
class _App extends ConsumerWidget {
const _App({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final router = ref.watch(routerProvider);
return MaterialApp.router(
theme: ThemeData(fontFamily: 'NotoSans'),
debugShowCheckedModeBanner: false,
routerConfig: router,
);
}
}
안녕하세요. GoRouter 적용해보기 파트에서 에러를 만나 어려움을 겪고 있네요. 버전업 때문에 기존 코드를 조금 수정하니 이전에 뜨던 오류는 사라졌습니다. 그러나 아래 에러 메시지에서는 어떻게 해결을 해야할 지 모르겠네요..
Got a stack frame from package:stack_trace, where a vm or web frame was expected. This can happen if FlutterError.demangleStackTrace was not set in an environment that propagates non-standard stack traces to the framework, such as during tests.
'package:flutter/src/foundation/stack_frame.dart':
패키지 버전은
flutter_riverpod: ^2.2.0
go_router: ^7.1.1
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
Flutter 프로젝트에서 GoRouter를 사용하면서 주어진 오류를 겪고 계신 것 같습니다. 이 오류는 보통 비표준 스택 트레이스가 Flutter 프레임워크에 전달되는 상황에서 발생할 수 있습니다. 특히 테스트 환경에서 이러한 문제가 발생할 수 있습니다.
다음은 이 문제를 해결하는 데 도움이 될 수 있는 몇 가지 단계입니다:
먼저, 사용하는 패키지의 버전이 서로 충돌하지 않는지 확인해야 합니다. flutter/pubspec.yaml
파일에서 모든 패키지의 의존성을 명확히 하고, 서로 호환 가능한 버전을 사용하고 있는지 체크하세요.
FlutterError.demangleStackTrace
설정은 비표준 스택 트레이스를 처리할 때 필요합니다. 보통 테스트 환경에서 사용되며, 아래와 같이 설정할 수 있습니다:
void main() {
FlutterError.demangleStackTrace = (StackTrace stack) {
return stack;
};
runApp(
ProviderScope(
child: _App(),
),
);
}
redirect
콜백의 반환 타입이 FutureOr<String?>
이 되도록 아래와 같이 변경해야 합니다:redirect: (context, state) {
return provider.redirectLogic(context, state);
}
관련하여 비슷한 주제를 다루는 질문을 확인하시고, 추가적인 도움이 필요하시면 구글 검색 결과 또는 코드팩토리 Flutter 수강생 Q&A를 참조해 보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
아 ㅎㅎ 선생님 버전 충돌 + 업뎃 + 라우트 네임중복(복붙 실수) 등이 겹쳐져서 터진 에러였네요.. 어제 하루종일 찾아보다가 포기했다가. 오늘 잃마치고 다시 정신차리고 디멩글 세팅해서 수정했네요.. ㅋㅋ SplashScreen이 두개 중복됐던것.. 죄송합니다...ㅠ