如何用 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) 仅在新状态与旧状态不同时才有效。此外,构建所需的一切都应该是状态的一部分。
如果 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) 仅在新状态与旧状态不同时才有效。此外,构建所需的一切都应该是状态的一部分。