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