gpt4 book ai didi

flutter - 在 dispose 方法中访问 BlocProvider.of(context)

转载 作者:行者123 更新时间:2023-12-04 13:40:06 32 4
gpt4 key购买 nike

有没有人知道我如何做到这一点?

我的代码:

  @override
void dispose() {
final FiltersBloc filtersBloc =
BlocProvider.of<FiltersBloc>(context);
super.dispose();
}

错误是:
flutter:         BlocProvider.of() called with a context that does not contain a Bloc of type FiltersBloc.
flutter: No ancestor could be found starting from the context that was passed to
flutter: BlocProvider.of<FiltersBloc>().
flutter:
flutter: This can happen if:
flutter: 1. The context you used comes from a widget above the BlocProvider.
flutter: 2. You used MultiBlocProvider and didn't explicity provide the BlocProvider types.
flutter:
flutter: Good: BlocProvider<FiltersBloc>(builder: (context) => FiltersBloc())
flutter: Bad: BlocProvider(builder: (context) => FiltersBloc()).
flutter:
flutter: The context used was: FiltersDrawer(dirty, state: _FiltersDrawerState#86e8a)

另外,如果我遵循错误代码并使用 final filtersBloc = BlocProvider<FiltersBloc>(builder: (context) => FiltersBloc())相反,我无法拨打 filtersBloc.dispatch()了。

我知道对于 initState,我们可以只是 didChangeDependencies反而。但是我找不到对应的 dispose。

任何帮助将不胜感激。谢谢!

最佳答案

BlockProvider 需要初始化上下文。您可以在屏幕的 Widget build() 上初始化它

late FiltersBloc filtersBloc;

@override
Widget build(BuildContext context){
filtersBloc = BlocProvider.of<FiltersBloc>(context);
return ...
}
...然后在 dispose() 上调用所需的方法
@override
void dispose() {
filtersBloc.dispatch();
super.dispose();
}

关于flutter - 在 dispose 方法中访问 BlocProvider.of<Bloc>(context),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58464705/

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