해결된 질문
작성
·
418
·
수정됨
답변 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));
}
이렇게 소스 수정해주시면 정상적으로 작동될 것입니다.
감사합니다.
0
소스상에는 크게 문제될 부분은 없어보이는데 ...
아무래도 소스를 전달 받아서 제가 직접 돌려봐야 확인이 가능 할 것 같습니다.
불편하시겠지만 소스를 mousai86@gmail.com 으로 보내주시면 소스 확인해서
답변드리도록 하겠습니다.
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가지 체크포인트 확인해봐주시겠어요??
답변 감사 드립니다.
InitCubit을 main.dart 파일내에 MyApp 위젯에서 아래와 같이 등록이 되어 있습니다.
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 };
}
내용 확인하여 수정해서 동작 확인 하였습니다.
도움주셔서 감사합니다! :)