无法在此 BlocConsumer<T, S> 小部件上方找到正确的提供者<T>
Could not find the correct Provider<T> above this BlocConsumer<T, S> Widget
首先,我阅读了几乎所有与此错误相关的问题,但找不到任何问题的答案。
我正在尝试使用 BlocProvider 在 SignInPage 中提供带有 BlocProvider 的子窗口小部件:
class SignInPage extends StatelessWidget {
const SignInPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Sign In'),
),
body: BlocProvider(
create: (context) => getIt<SignInFormBloc>(),
child: const SignInForm(),
),
);
}
}
而 SignInForm 是:
class SignInForm extends StatelessWidget {
const SignInForm({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return BlocConsumer<SignInFormBloc, SignInFormState>(
listener: (context, state) {
},
builder: (context, state) {
},
);
}
}
据我所知,BlocConsumer 应该在父小部件中搜索 SignInFormBloc,而父小部件是 BlocProvider,我通过 SignInFormBloc 为它提供我不知道为什么找不到它
我尝试将它包装在 Builder(builder: (context) {} ) 中,以防它在错误的上下文中搜索但也不起作用。
我在使用 SignInPage 的 AppRouter 中犯了一个错误我使用了 SignInForm
@MaterialAutoRouter(
routes: [
AutoRoute(page: SplashPage, initial: false),
// It should be SignInPage -_-
AutoRoute(page: SignInForm, initial: true),
],
)
class $AppRouter {}
首先,我阅读了几乎所有与此错误相关的问题,但找不到任何问题的答案。
我正在尝试使用 BlocProvider 在 SignInPage 中提供带有 BlocProvider 的子窗口小部件:
class SignInPage extends StatelessWidget {
const SignInPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Sign In'),
),
body: BlocProvider(
create: (context) => getIt<SignInFormBloc>(),
child: const SignInForm(),
),
);
}
}
而 SignInForm 是:
class SignInForm extends StatelessWidget {
const SignInForm({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return BlocConsumer<SignInFormBloc, SignInFormState>(
listener: (context, state) {
},
builder: (context, state) {
},
);
}
}
据我所知,BlocConsumer 应该在父小部件中搜索 SignInFormBloc,而父小部件是 BlocProvider,我通过 SignInFormBloc 为它提供我不知道为什么找不到它
我尝试将它包装在 Builder(builder: (context) {} ) 中,以防它在错误的上下文中搜索但也不起作用。
我在使用 SignInPage 的 AppRouter 中犯了一个错误我使用了 SignInForm
@MaterialAutoRouter(
routes: [
AutoRoute(page: SplashPage, initial: false),
// It should be SignInPage -_-
AutoRoute(page: SignInForm, initial: true),
],
)
class $AppRouter {}