繁体   English   中英

复选框未更新 flutter 集团

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM