【发布时间】:2020-08-06 01:18:39
【问题描述】:
我正在尝试清理这些杂乱无章的小部件,但我没有办法这样做。我的NavigationBloc 依赖于AuthenticationBloc 提供的流,为了防止内存泄漏,我必须关闭流。
需要 Builder 小部件,以便我可以获得BlocProvider 提供的最新BuildContext,但我知道MultiBlocProvider 会极大地清理这个问题。我想避免将此小部件包装在 runApp 函数中,但我猜这是一个选项。
class _MyAppState extends State<MyApp> {
final authRepo = AuthRepo();
AuthenticationBloc authBloc;
@override
void dispose() {
authBloc?.close();
super.dispose();
}
@override
Widget build(BuildContext context) {
return BlocProvider<AuthenticationBloc>(
create: (_) =>
AuthenticationBloc(authRepo: authRepo)..add(InitializeAuth()),
child: Builder(builder: (context) {
authBloc = context.bloc<AuthenticationBloc>();
return BlocProvider<NavigationBloc>(
create: (_) => NavigationBloc(authBloc),
child: MaterialApp(
title: 'Arrow Manager',
debugShowCheckedModeBanner: false,
theme: appTheme(),
builder:
ExtendedNavigator<Router>(router: Router(), initialRoute: '/'),
),
);
}),
);
}
}
【问题讨论】:
-
为什么你确定有更好的方法?
标签: flutter bloc flutter-bloc