inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter

초기 페이지 연결하기

초기 페이지 연결하기

해결된 질문

493

박상우

작성한 질문수 4

0

초기 페이지 연결하기 관련하여 스터디중에 있는데요

앱 실행은 잘 되는데 실행하자 마자 아래와 같이

에러가 발생하고 있는데 이게 어떤것때문에 그런지 알 수있을까요?

RootPage를 호출하면서 발생이 되더라구요

확인 부탁 드려요!스크린샷 2023-07-08 오후 12.27.42.png

flutter firebase bloc

답변 4

0

개발하는남자

안녕하세요 소스 확인해보니 main.dart 파일에 잘못된 연결점이 있었습니다.

main() 함수에서 runApp에 MyApp 위젯을 연결해줘야하는데 바로 App 페이지로 연결되어있기 때문에 문제가 발생되었습니다.

 void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  HydratedBloc.storage = await HydratedStorage.build(
    storageDirectory: await getApplicationDocumentsDirectory(),
  );
  Dio dio = Dio(BaseOptions(baseUrl: 'https://openapi.naver.com/'));
  dio.interceptors.add(CustomInterceptor());
  runApp(MyApp(dio: dio));
}

이렇게 소스 수정해주시면 정상적으로 작동될 것입니다.

감사합니다.

1

박상우

내용 확인하여 수정해서 동작 확인 하였습니다.

도움주셔서 감사합니다! :)

0

개발하는남자

소스상에는 크게 문제될 부분은 없어보이는데 ...

아무래도 소스를 전달 받아서 제가 직접 돌려봐야 확인이 가능 할 것 같습니다.

불편하시겠지만 소스를 mousai86@gmail.com 으로 보내주시면 소스 확인해서

답변드리도록 하겠습니다.

 

0

박상우

빠른 답변 감사합니다.

위에 메일로 소스 첨부 전달하였습니다.

0

개발하는남자

죄송하지만 app.dart 파일 소스도 같이 알려주시면 문제 확인에 도움이 될 것 같습니다 ^^;

0

박상우

네 확인 감사합니다.

app.dart는 아래와 같이 되어 있습니다.

 

class App extends StatefulWidget {
  const App({super.key});

  @override
  State<App> createState() => _AppState();
}

class _AppState extends State<App> {
  late GoRouter router;

  @override
  void initState() {
    super.initState();

    router = GoRouter(
      initialLocation: "/",
      routes: [
        GoRoute(
            path: '/',
            builder: (context, state) => const RootPage(),
        ),
        GoRoute(
          path: '/login',
          builder: (context, state) => const LoginPage(),
        ),
      ],
    );
  }


  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      routerConfig: router,
      theme: ThemeData(
        appBarTheme: const AppBarTheme(
          elevation: 0,
          backgroundColor: const Color(0xff1C1C1C),
          titleTextStyle: TextStyle(color: Colors.white),
        ),
        scaffoldBackgroundColor: const Color(0xff1C1C1C)
      ),
    );
  }
}

0

개발하는남자

오류 내용은 InitCubit 이 create 되고 다음 하위 BuildContext에서 접근을 해야하는데 동일 depth에서 접근을 하려고해서 발생되는 오류입니다.

InitCubit을 main.dart 파일내에 MyApp 위젯에서 등록을 해줬을까요? 아니면 app.dart 파일 내에서 등록을 해줬을까요?

또한 InitCubit의 경우 BlocProvider를 통해 생성을 할때에 lazy 옵션을 false로 세팅을 해줬을까요?

2가지 체크포인트 확인해봐주시겠어요??

0

박상우

답변 감사 드립니다.

 

  1. InitCubit을 main.dart 파일내에 MyApp 위젯에서 아래와 같이 등록이 되어 있습니다.

  2. lazy 옵션을 false로 되어 있는 상태입니다.

아래와 같이 코딩되어 있는데 어느부분이 문제 되는것일까요?ㅠ

main.dart

class MyApp extends StatelessWidget {
  final Dio dio;
  const MyApp({super.key, required this.dio});

  @override
  Widget build(BuildContext context) {
    return MultiRepositoryProvider(
      providers: [
        RepositoryProvider(create: (context) => NaverBookRepo(dio),
        )
      ],
      child: MultiBlocProvider(
          providers: [
            BlocProvider(create: (context) => InitCubit(),lazy: false,), 
            BlocProvider(create: (context) => AppDataLoadCubit(),lazy: false,),
            BlocProvider(create: (context) => SplashCubit(),),
          ],
          child: App()),
    );
  }
}

 

root_page.dart

class RootPage extends StatelessWidget {
  const RootPage({super.key});

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<InitCubit, bool>(
      builder: (context, state) {
        return state ? const SplashPage() : const InitPage();
      },
    );
  }
}

Init_cubit.dart

class InitCubit extends HydratedCubit<bool> { 
  InitCubit() : super(false); 

  void startApp() {
    emit(true);
  }

  @override
  bool fromJson(Map<String, dynamic> json) => json['state'] as bool;

  @override
  Map<String, bool> toJson(bool state) => { 'state': state };
}

 

Figma 디자인 링크는 어디서 받을 수 있을까요? ☺️

0

76

1

TextFiled 키보드, rebuild 이슈 - review_write_page.dart

0

61

1

오류..

0

151

2

혹시 웹에서 디버깅하시는분들은

0

445

1

비동기 처리방식

0

241

3

애뮬레이터 동작안됨과 xcode 실행안됨

0

197

1

기능별로 정리가 되지않아요

0

195

2

임포트 자동생성

0

230

4

클래스 이름 동시 변경

0

181

2

단축키옵션

0

202

2

의존성 세팅이 끝나면

0

114

1

플러터 설치

0

171

2

goRouter

0

159

2

appBar 텍스트 컬러 적용이 안돼요!

0

172

1

모델 객체에 대해

0

216

1

네이버api프로젝트세팅부분에서

0

291

2

doc id와 uid

0

458

2

실제 폰에서 테스트 시 리뷰 작성 버튼 위치

0

252

1

샘플 소스 전체 다운받아볼 수 있을까요?

0

344

1

애플 로그인 위해 애플 개발자 인증센터는 Developer 프로그램 가입해야 하나요?

0

382

1

GoogleService-Info.plist > REVERSED_CLIENT_ID 안보입니다.

0

1616

2

즐겨찾기 기능 질문 요청드립니다..

1

491

1

리뷰작성 별점 문의

0

343

1

플러터 바탕화면 빠진후 앱 진행시

1

857

6