Флаттер: включение / отключение текстовых форм, отправка информации по умолчанию, если они отключены (без ввода пользователя) - PullRequest
0 голосов
/ 21 апреля 2019

Во флаттере у меня есть поля текстовой формы, которые я отключил, и отправляет предварительно заполненные значения, если пользовательский ввод отсутствует (поля отключены).Я хочу создать кнопку с именем «Фильтр», и когда пользователь нажимает эту кнопку, он включает поля и позволяет пользователю выбирать свои собственные значения для отправки.

В настоящее время я нашел способ отключитьтекстовые поля с использованием enabled: false.Я не уверен, как установить все 3 из этих полей формы во включенное состояние: true, когда пользователь нажимает кнопку.Кроме того, в настоящее время я проверил наличие пустых данных для отправки этих значений по умолчанию.Однако, если нажать кнопку фильтра и включить формы, я не хочу отправлять предварительно заполненные значения.

//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
}

Любая помощь будет принята с благодарностью, спасибо

1 Ответ

0 голосов
/ 21 апреля 2019

создайте переменную 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
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...