본문 바로가기
Flutter

No GoRouter found in context [flutter] error

by 난타코다옹 2023. 10. 30.

제목

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가 정상적으로 작동할 수 있도록 해주어야 해