wei*_*wei 11 dispose dart flutter bloc
有人知道我该怎么做吗?
我的代码:
@override
void dispose() {
final FiltersBloc filtersBloc =
BlocProvider.of<FiltersBloc>(context);
super.dispose();
}
Run Code Online (Sandbox Code Playgroud)
错误是:
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)
Run Code Online (Sandbox Code Playgroud)
另外,如果我按照错误代码并使用final filtersBloc = BlocProvider<FiltersBloc>(builder: (context) => FiltersBloc()),我将无法filtersBloc.dispatch()再调用。
我知道对于 initState,我们可以didChangeDependencies改为。但我找不到相当于处置的东西。
任何帮助将不胜感激。谢谢!
Oma*_*att 12
BlockProvider 需要初始化上下文。您可以在屏幕上对其进行初始化Widget build()
late FiltersBloc filtersBloc;
@override
Widget build(BuildContext context){
filtersBloc = BlocProvider.of<FiltersBloc>(context);
return ...
}
Run Code Online (Sandbox Code Playgroud)
...然后调用所需的方法dispose()
late FiltersBloc filtersBloc;
@override
Widget build(BuildContext context){
filtersBloc = BlocProvider.of<FiltersBloc>(context);
return ...
}
Run Code Online (Sandbox Code Playgroud)