我的main.dart文件看起来像这样。
home: MultiBlocProvider(
providers: [
BlocProvider<UserBloc>(
create: (BuildContext context) => UserBloc()..add(GetUser(userId:"5e0b62023b75dd60e22edaad")),
),
BlocProvider<TodoBloc>(
create: (BuildContext context)=> TodoBloc()..add(AddTodoEvent()),)
],
child: FirstScreen(),
),
我想导航到FirstScreen中按下按钮的第二个屏幕。
var router = new MaterialPageRoute(
builder: (BuildContext context){
return BlocProvider<UserBloc>(
create: (BuildContext context) => UserBloc(),
child: SecondScreen(),
);
});
Navigator.of(context).push(router);
可以正常工作,但是会创建新的UserBloc初始状态。我想要的是在UserBlog上获得当前状态。
我尝试过this
UserBloc userBloc = BlocProvider.of<UserBloc>(context);
BlocProvider<CounterBloc>(
bloc: userBloc,
child: SecondScreen()
)
bloc给出错误。有什么方法可以导航到SecondScreen并具有相同的状态。
请检查一次此博客文章https://blog.geekyants.com/state-management-in-flutter-7df833e6f3bd。它解释了使用bloc模式的清晰过程,而没有任何插件支持。如果您需要其他帮助,请告诉我。
每次调用BlocProvider时,都会创建bloc类的新实例。