제목
No GoRouter found in context [flutter] error
아래 오류는 플러터(flutter) 앱을 개발하면서 자주 마주치게 되는 문제 중 하나에요!
GoRouter를 사용하는 경우에 발생하는 오류인데요. 같이 살펴볼까요? 😄
Error
Unhandled Exception: 'package:go_router/src/router.dart': Failed assertion: line 280 pos 12: 'inherited != null': No GoRouter found in context
위의 오류는 GoRouter를 사용하는 경우에 발생하는 오류에요. GoRouter를 사용하는 위젯에서 해당 오류가 발생하는 것 같아요.
해당 오류가 발생하는 코드를 살펴보겠습니다. 코드를 보면 GoRouter를 사용하는 위젯이 MaterialApp.router로 감싸져 있네요. 함께 살펴보도록 해요!
에러 발생 코드
Widget build(BuildContext context) {
return BlocProvider<AuthenticationBloc>(
create: (context) => AuthenticationBloc()..add(AppStarted()),
child: BlocListener<AuthenticationBloc, AuthenticationState>(
listener: (context, state) {
if (state is AuthenticationUnauthenticated) {
context.goNamed(LoginPage.routeName);
}
if (state is AuthenticationAuthenticated) {
context.goNamed(NavigationBarContainer.routeName);
}
},
child: MaterialApp.router(
title: 'Flutter Demo',
routeInformationProvider: _router.routeInformationProvider,
routeInformationParser: _router.routeInformationParser,
routerDelegate: _router.routerDelegate,
theme: ThemeData(
primarySwatch: Colors.blue,
)),
),
);
}
위의 코드에서 GoRouter를 사용하는 MaterialApp.router 위젯이 있네요. 해당 위젯에서 오류가 발생하는 것 같아요.
해당 오류를 해결하기 위해서는 GoRouter를 사용하는 위젯에서 GoRouter가 정상적으로 작동할 수 있도록 해주어야 해