Forms 颤振:启用/禁用文本表单,如果它们';重新禁用(无用户输入)
在flatter中,我禁用了文本表单字段,如果没有用户输入(字段禁用),则发送预填充值。我想创建一个名为“Filter”的按钮,当用户单击该按钮时,它将启用字段并允许用户选择自己要提交的值 目前,我已经找到了一种使用enabled:false禁用文本字段的方法。我不知道当用户单击按钮时,如何将这3个表单字段全部设置为enabled:true。另外,目前我已经检查了空输入以提交这些默认值。但是,如果按下筛选按钮并启用表单,我不想发送预填充的值Forms 颤振:启用/禁用文本表单,如果它们';重新禁用(无用户输入),forms,dart,flutter,Forms,Dart,Flutter,在flatter中,我禁用了文本表单字段,如果没有用户输入(字段禁用),则发送预填充值。我想创建一个名为“Filter”的按钮,当用户单击该按钮时,它将启用字段并允许用户选择自己要提交的值 目前,我已经找到了一种使用enabled:false禁用文本字段的方法。我不知道当用户单击按钮时,如何将这3个表单字段全部设置为enabled:true。另外,目前我已经检查了空输入以提交这些默认值。但是,如果按下筛选按钮并启用表单,我不想发送预填充的值 //would like to use these 3
//would like to use these 3 values on submit if fields are disabled
double distance = 10.0;
double length = 1.0;
double results = 10.0;
Widget distanceFromUser() {
return TextFormField(
enabled: false,
decoration: InputDecoration(
labelText: "Distance From User: 10", hintText: '10 miles'),
onSaved: (String value) {
if(value.isEmpty){
distance = 10.0;
}
else {
distance = double.parse(value);
}
},
);
}
Widget lengthOfTrail() {
return TextFormField(
enabled: false,
decoration: InputDecoration(
labelText: "Minimum Length of Trail: 1", hintText: '1 mile'),
onSaved: (String value) {
if(value.isEmpty){
length = 1.0;
}
else {
length = double.parse(value);
}
},
);
}
Widget numOfResults() {
return TextFormField(
enabled: false,
decoration: InputDecoration(
labelText: "Number of results : 10", hintText: 'numOfResults'),
onSaved: (String value) {
if(value.isEmpty){
results = 10.0;
}
else {
results = double.parse(value);
}
},
);
}
Widget submitButton() {
return RaisedButton(
color: Color.fromRGBO(58, 66, 86, 1.0),
child: Text("Find trails near me", style: TextStyle(color: Colors.white)),
onPressed: () async {
formkey.currentState.save();
final trails = await fetchData();
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => MapScreen(trails, userLat, userLon)),
);
},
);
}
}
Widget Filter(){
//code to re-enable text forms would go here
}
非常感谢您的帮助,创建一个bool变量来处理所有TextFormField的禁用和启用,您可以使用这个bool变量来决定要发送的数据是预填充的还是新的 大概是这样的:
bool _isEnable = false;
Widget distanceFromUser() {
return TextFormField(
enabled: _isEnable, // here use the variable in all the TextFormField
decoration: InputDecoration(
labelText: "Distance From User: 10", hintText: '10 miles'),
onSaved: (String value) {
if(value.isEmpty){
distance = 10.0;
}
else {
distance = double.parse(value);
}
},
);
}
// onpress of filter button
setState(() { _isEnable = true });
// onpress of submit
(){
if(!_isEnable){
//defualt data pass
}else{
//new data you have to pass
}
}