使用 get_it 时颤动 bloc 处理

Posted

技术标签:

【中文标题】使用 get_it 时颤动 bloc 处理【英文标题】:flutter bloc dispose while using get_it 【发布时间】:2021-01-27 00:50:38 【问题描述】:

我有一个问题,我们是否需要在 get_it 包中创建一个 bloc 时对其进行处理?例如,我有一个名为 LoginBloc 的块。我创建它的方式如下:

final GetIt sl = GetIt.instance;
sl.registerFactory(() => LoginBloc(sl(), sl()));

我提供如下:

    BlocProvider(
       child: LogInPage(),
          create: (BuildContext context) 
                return sl<LoginBloc>();
               

我的问题是,bloc 提供程序是否在页面被处置或不需要时处置 bloc,或者我必须手动处置它,因为我使用 get_it 包来创建它? 谢谢大家

【问题讨论】:

【参考方案1】:

BlocProvider 与 create 一起使用时会自动处理 bloc 的关闭。

您可以查看官方文档了解更多信息。 https://pub.dev/documentation/flutter_bloc/latest/flutter_bloc/BlocProvider-class.html

当您通过sl.registerFactory 注册某些东西时,GetIt 会在您每次访问它时创建一个新实例。

【讨论】:

以上是关于使用 get_it 时颤动 bloc 处理的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中使用 Bloc 模式处理用户注册错误

如何在颤动中使用 bloc 模式进行错误处理?

如何使用 BLoC 在颤动的屏幕之间传递数据?

为啥 AnimatedList 在颤动中不使用 bloc 状态的列表构建?

如何在颤动中使用带有 Bloc 的冷冻包?

如何在颤动中使用 hydated_bloc 保持状态?