我正试图找到一种方法来创建一个新的bloc实例,并将其反映在multibloc提供程序中。
当前我有以下内容:
Scaffold(
appBar: AppBar(),
body: MultiBlocProvider(
providers: [
BlocProvider<BlocABloc>(
create: (BuildContext context) => _aBloc,
),
BlocProvider<BlocBBloc>(
create: (BuildContext context) => _bBloc,
),
]...
然后,我尝试创建一个新的BlocABloc实例,以及另一个BlocBBloc实例:
generateNew(){
setState(() {
_aBloc = BlocABloc();
_bBloc = BlocBBloc();
});
}
我期望构建函数重新执行,并且BlocProvider中使用了新实例。但是,我发现BlocBuilder仍在从Bloc的先前实例获取状态。
有没有办法处理这种情况?
答案 0 :(得分:1)
我不知道您为什么要这样做。但是您可以使用if (likes == 0 && dislike == 0) {
setLikePercentage(50);
setDislikePercentage(50);
} else if (likes == 0) {
setLikePercentage(0);
setDislikePercentage(100);
} else if (dislikes == 0) {
setLikePercentage(100);
setDislikePercentage(0);
} else {
setLikePercentage((likes / (dislikes + likes)) * 100);
setDislikePercentage((dislikes / (dislikes + likes)) * 100);
}
强制再次执行BlocProvider
create方法。这是一个示例,您可以如何做。
key
答案 1 :(得分:0)