在这里输入图像描述你好,我在颤振平台上新来的,任何人都可以告诉我如何在颤振中管理sate,我做了一个应用程序,它有三个下拉项目选择。我需要的是,当我选择所有三个项目,它的去向,保存,并反映到下一个屏幕。根据图像,我的下拉数据从rest开始,需要一个一个地选择它们,然后进入下一个显示选定数据的屏幕.因此,请指导我如何在这种情况下管理状态。
发布于 2022-05-20 12:08:55
如果它是某种形式,在我看来,最好的方式是创建颤振集团致力于这一形式。区块
您可以直接将状态保存在组块中或创建存储库。通过调用每个选择变化的事件,您可以重新绘制选定的表单部分。
状态
abstract class ParkingState extends Equatable {
@override
List<Object?> get props => [];
}
class ParkingIdleState extends ParkingState {}
class PlateSelectedState extends ParkingState {
final String? selectedPlate;
PlateSelectedState(this.selectedPlate);
@override
List<Object?> get props => [this.selectedPlate];
}事件
abstract class ParkingEvent extends Equatable {}
class SelectPlateEvent extends ParkingEvent {
String plate;
@override
List<Object?> get props => [this.plate];
SelectPlateEvent(this.plate);
}集团
class ParkingOrderBloc extends Bloc<ParkingEvent, ParkingState> {
String? selectedPlate = "";
ParkingOrderBloc() : super(ParkingIdleState()) {
on<SelectPlateEvent>(_dealWithSelectPlateEvent);
}
FutureOr<void> _dealWithSelectPlateEvent(SelectPlateEvent event, Emitter<ParkingState> emit) {
this.selectedPlate = event.plate;
emit(PlateSelectedState(this.selectedPlate));
}
}然后,在用块构建器包装的form类中,可以调用
context.read<ParkingOrderBloc>().add(SelectPlateEvent("PLATNUMBER"));然后读值:
String plate = context.read<ParkingOrderBloc>().selectedPlate;发布于 2022-05-20 12:43:48
如果您对颤振还不熟悉,那么最好使用setState。
class MyStatefulWidget extends StatefulWidget {
const MyStatefulWidget({Key? key}) : super(key: key);
@override
State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
String dropdownValue = 'One';
@override
Widget build(BuildContext context) {
return DropdownButton<String>(
value: dropdownValue,
icon: const Icon(Icons.arrow_downward),
elevation: 16,
style: const TextStyle(color: Colors.deepPurple),
underline: Container(
height: 2,
color: Colors.deepPurpleAccent,
),
onChanged: (String? newValue) {
setState(() {
dropdownValue = newValue!;
});
},
items: <String>['One', 'Two', 'Free', 'Four']
.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
);
}
}https://stackoverflow.com/questions/72318053
复制相似问题