![](/img/trans.png)
[英]Flutter Bloc Builder is not getting called and not updating UI after state change
[英]checkbox not updating flutter bloc
我想做一个咖啡机应用 我想更新 flutter 区块 package 中的复选框,
我用bloc给state管理
我尝试在 web 上搜索,但我对这个问题没有很好的答案
帮助我的提示,我的文件名为AppCubit
是一个 bloc 文件, AppState
是状态, ChangeCheckBox
和屏幕MainModule
AppCubit
是肘 class
class AppCubit extends Cubit<AppState> {
AppCubit() : super(AppInitial());
// value in
bool isWithCreamChecked = false;
static AppCubit get(BuildContext context) => BlocProvider.of(context);
// this is a function for changing the value of the checkbox
void checkBox({bool? value, bool? changeValue}) {
changeValue = value!;
emit(ChangeCheckBox(value,changeValue));
}
}
AppState
应用中的所有状态
abstract class AppState {}
class AppInitial extends AppState {}
// checkbox states
class ChangeCheckBox extends AppState {
bool value;
bool changeValue;
ChangeCheckBox(this.value,this.changeValue);
}
在MainModule
中
Checkbox(
value: AppCubit.get(context).isWithCreamChecked,
onChanged: (bool? value) {
AppCubit.get(context).isWithCreamChecked = value!;
},
),
const Text('adding Cream to coffee, price is 20')
Checkbox(
value: AppCubit.get(context).isWithCreamChecked,
onChanged: (bool? value) {
AppCubit.get(context).checkBox(
value: value!,
changeValue:AppCubit.get(context).isWithCreamChecked
);
},
),
const Text('adding cream to coffee, price is 10')
我想这是因为你在放 ! 价值两倍( value!
)。 发送到这里的复选框 function 之前的一个。
AppCubit.get(context).checkBox(
value: value!,
changeValue:AppCubit.get(context).isWithCreamChecked
);
然后当您在肘部内设置复选框时再次。
void checkBox({bool? value, bool? changeValue}) {
changeValue = value!;
emit(ChangeCheckBox(value,changeValue));
}
这将导致它与您最初获得的值相同。
只需执行一次即可更改值。 还放!
在设置之前更改值的值之前,如changeValue = !value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.