Flutter 通过BlocProvider在颤振的initState中创建Bloc实例

Flutter 通过BlocProvider在颤振的initState中创建Bloc实例,flutter,bloc,flutter-bloc,Flutter,Bloc,Flutter Bloc,在statefulWidget的InItState()方法中初始化和创建Bloc实例是一种好的做法吗?或者没有,为什么,谢谢你: LoginBloc loginBloc; @override void initState() { loginBloc = BlocProvider.of<LoginBloc>(context); super.initState(); } LoginBloc LoginBloc; @凌驾 void initState(){

在statefulWidget的InItState()方法中初始化和创建Bloc实例是一种好的做法吗?或者没有,为什么,谢谢你:

LoginBloc loginBloc;

  @override
  void initState() {
    loginBloc = BlocProvider.of<LoginBloc>(context);
    super.initState();
  }
LoginBloc LoginBloc;
@凌驾
void initState(){
loginBloc=BlocProvider.of(上下文);
super.initState();
}

您编写的代码实际上并没有实例化任何对象。它正在从提供的上下文中检索可用的
LoginBloc
的任何实例,因此完全可以这样做。然而,据我所知,在
initState
中实例化对象是可以的,但请记住,在使用
BlocProvider
创建实例之后,您也必须处理关闭它的问题。

是的,这就是您的做法。使用默认构造函数创建一个bloc,或者从BlocProvider获取它-都在initState()中。如果bloc是使用constructor为您的小部件创建的,请在dispose()中使用bloc.close()。谢谢您的回答,但请您澄清这是什么意思((如果bloc是使用constructor为您的小部件创建的))?抱歉,解释不清楚。这只是一个提醒,当不再需要它时关闭你的bloc,例如,如果它是在initState()中创建的,并且只在你的小部件中使用,那么当小部件被释放时它应该被关闭——在dispose()中也是如此。这基本上就是initState()和dispose()的用途。回答线程问题-是的,您应该在initState()中实例化或从提供程序获取您的bloc。