如何用 cubit 改变 bool true false?

How can I change bool true false with cubit?

如果 bool editI == true,我想显示一个图标,如果 editI == false,我不显示它。 但是我无法更改 cubit.dart 中 editI 的值并传递给 page.dart

我有这个

class LayoutCubit extends Cubit<LayoutStates> {
  LayoutCubit() : super(LayoutInitState());

  static LayoutCubit get(context) => BlocProvider.of(context);
...
 bool editI = false;

  void changeEditI(editI) {
    print(editI);
    editI = !editI;
    emit(LayoutChangeEditIState());
    print(editI);
  }

页数

class ProfileScreen extends StatelessWidget {
    final String? id;
  const ProfileScreen({Key? key, required this.id}) : super(key: key);
    @override
    Widget build(BuildContext context) {
      return BlocConsumer<LayoutCubit, LayoutStates>(
        listener: (context, state) {},
        builder: (context, state) {
            var cubit = LayoutCubit.get(context);
            cubit.getUserDataById(id!);
            return Scaffold(
            ...
            IconButton(
              onPressed: (() { 
                cubit.changeEditI(editI);
              }),
              icon: const Icon( Icon.edit,size: 20))
            ...
            child: ListTile(
              ...        
              trailing: editI == true ? IconButton(
                onPressed: () {}, 
                icon:const Icon(Icon.delete)): null,
              ...

你没有覆盖旧值,而是局部变量:

void changeEditI(bool editI) {
    print(editI);
    this.editI = !editI;
    emit(LayoutChangeEditIState());
    print(editI);
}

或简单地:

void changeEditI() {
    print(editI);
    editI = !editI;
    emit(LayoutChangeEditIState());
    print(editI);
}

另外 editI 必须是状态的一部分。 emit(state) 仅在新状态与旧状态不同时才有效。此外,构建所需的一切都应该是状态的一部分。