我想做一个咖啡机应用
我想更新flutter block包中的复选框,
我使用块状态管理
我试着在网上搜索,但我没有一个很好的答案这个问题
提示帮助我,我的文件被命名为AppCubit
是一个块文件和AppState
是状态和ChangeCheckBox
和这屏幕MainModule
AppCubit
是肘节类
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')
1条答案
按热度按时间gcuhipw91#
我想这是因为你把!with value放了两次(
value!
)。一次是在把它发送到这里的复选框函数之前。然后再次当你设置肘内的复选框。
这将导致它与您最初获得的值相同。
只需更改一次值。在像
changeValue = !value
那样设置值之前,也要将!
放在用于更改值的值之前