gpt4 book ai didi

flutter - BlocProvider 没有找到 Generic Flutter Bloc

转载 作者:行者123 更新时间:2023-12-05 06:00:39 24 4
gpt4 key购买 nike

我有以下我正在尝试使用的通用 Bloc。

class ManageFeedbackBloc<T extends IContribute>
extends Bloc<ManageFeedbackEvent, ManageFeedbackState> {}

我使用以下提供程序来创建它:

void _navigateToContributionPage(
BuildContext context, FeedbackCategory category) {
final userFeedbackBloc = BlocProvider.of<UserFeedbacksBloc>(context);
final manageFeedbackBloc = ManageFeedbackBloc<DoctorFeedback>(
repository: ManageFeedbackRepository());

final manageFeedbackDestination =
BlocProvider<ManageFeedbackBloc<DoctorFeedback>>(
create: (context) => manageFeedbackBloc,
child: ManageFeedbackPage<DoctorFeedback>(),
lazy: false,
);

userFeedbackBloc.monitorFeedbackChanges(
BlocProvider.of<ManageFeedbackBloc<DoctorFeedback>>(context));

Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (context) => manageFeedbackDestination));

上面的代码在这一行崩溃了:

userFeedbackBloc.monitorFeedbackChanges(
BlocProvider.of<ManageFeedbackBloc<DoctorFeedback>>(context));

我得到错误:

Another exception was thrown: Error: Could not find the correctProvider<ManageFeedbackBloc> above thisContributionSelectorPage Widget

如果我也尝试跳过上述内容并使用 BlocBuilder,我会得到同样的错误。请看下面的代码:

 class ManageFeedbackPage<T extends IContribute> extends StatelessWidget {
final _formKey = GlobalKey<FormState>();

@override
Widget build(BuildContext context) {
return BlocConsumer<ManageFeedbackBloc<T>, ManageFeedbackState>(
listenWhen: (_, currentState) => currentState.isListenerState,
buildWhen: (_, currentState) => !currentState.isListenerState,
listener: (context, state) async {
if (state is ManageFeedbackPromptUpdate) {
_promptActionAlert(
context,
'Modification',
'Êtes vous sûr de vouloir modifier ce retour d\'expérience ?',
ManageFeedbackUpdateFeedback());
return;
}
throw UnimplementedError(
'manage_feedback_page - UnImplemented State: Tried to implement listening state to ${state.toString()}');
},
builder: (context, state) {
if (state is ManageFeedbackLoading) {
return _getLoadingState();
}

return _getLoadedState(context);
},
);
}
}

是不是不支持generic bloc?

我正在使用 flutter_bloc:^7.0.0

最佳答案

所以我相信我找到了问题:

final manageFeedbackDestination =
BlocProvider<ManageFeedbackBloc<DoctorFeedback>>(
create: (context) => manageFeedbackBloc,
child: ManageFeedbackPage<DoctorFeedback>(),
lazy: false,
);

BlocProvider 类型不应仅指定没有泛型的 BloC 类型的泛型类型。

final manageFeedbackDestination =
BlocProvider<ManageFeedbackBloc>(
create: (context) => manageFeedbackBloc,
child: ManageFeedbackPage<DoctorFeedback>(),
lazy: false,
);

这对我有用 BlocProvider 而不是 BlocProvider >。

关于flutter - BlocProvider 没有找到 Generic Flutter Bloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67564497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com