问题描述
我正在开发一个非常简单的应用程序来测试表单的所有控件。
我有一个 DropdownButtonFormField
的自定义小部件,它有一个单独的文件,并具有以下代码,其中包含一个扩展 FormField
的类:
CWGenderFormField(
{int cwGenderValue = 0,FormFieldSetter<int> onSaved,FormFieldValidator<int> validator,AutovalidateMode autovalidatemode = AutovalidateMode.always})
: super(
onSaved: onSaved,validator: validator,initialValue: cwGenderValue,autovalidateMode: autovalidatemode,builder: (FormFieldState<int> state) {
return Container(
child: DropdownButtonFormField(
icon: Icon(Icons.arrow_drop_down),hint: Text("Select Gender"),elevation: 8,validator: (dmiGender) {
if (dmiGender.toString() == "0") {
return "Please select a Gender";
}
return null;
},value: cwGenderValue,items: _cwGenderItems,onChanged: (dmiGender) {
state.didChange(cwGenderValue = dmiGender);
},onSaved: (dmiGender) {
state.didChange(cwGenderValue = dmiGender);
},),);
});
这里的 _cwGenderItems
是包含菜单项的 static final List<DropdownMenuItem<int>>
:选择、男性等
我在带有以下代码段的 dart 文件中使用了它:
...
CWGenderFormField(
onSaved: (ddGender) {
iGender = ddGender;
},...
接下来我有显示日期选择器的代码:
TextFormField(
decoration: inputdecoration(
icon: Icons.calendar_today_outlined,hintText: 'Tap to select date of birth',labelText: 'Date of Birth',context: context),controller: tecdob,readOnly: true,keyboardType: TextInputType.datetime,style: Theme.of(context).inputdecorationTheme.labelStyle,onTap: () {
showDatePicker(
context: context,initialDate: DateTime.tryParse(strdob) == null
? DateTime(DateTime.Now().year - 18,DateTime.Now().month,DateTime.Now().day)
: DateTime.parse(strdob),fieldHintText: 'Must be at least 18 years',firstDate: DateTime(DateTime.Now().year - 100,DateTime.Now().day),lastDate: DateTime(DateTime.Now().year - 18,).then((dpSelecteddob) {
setState(() {
iGender = iGender;
strdob = dpSelecteddob.toString();
DateTime strdobTemp = DateTime.parse(strdob);
tecdob.text = strdobTemp.day.toString() +
" - " +
strdobTemp.month.toString() +
" - " +
strdobTemp.year.toString();
});
});
},
这里,`tecdob = TextEditingController()`
现在,您可以在附加的 GIF 中看到,从日期选择器中选择日期时,我的下拉列表会重置。
请指导如何保留下拉菜单的值。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)