Flutter: как показать или скрыть ярлык / текстовый виджет, когда текстовое поле получает или теряет фокус?

#flutter #flutter-layout

#flutter #flutter-layout

Вопрос:

Я новичок в flutter.

Я создаю форму регистрации пользователя, я хочу добиться следующего визуального эффекта:

Когда текстовое поле формы является обычным в форме, оно выглядит следующим образом:

введите описание изображения здесь

Но я хочу следующее, когда текстовое поле находится в «фокусе». Когда пользователь вводит текст, это выглядит следующим образом:

введите описание изображения здесь

Это мое обычное текстовое поле

 TextFormField(
                                    initialValue: name,
                                    onChanged: (val) {
                                      setState(() {
                                        name = val;
                                        print(name);
                                      });
                                    },
                                    decoration: InputDecoration(
                                      hintText: "Nombres",
                                      hintStyle: TextStyle(
                                          fontSize: scalador.setSp(22) * 2.63,
                                          color: Color(0xFF949494)),
                                    ),
                                    style: TextStyle(
                                      color: Color(0xFF242427),
                                      fontSize: scalador.setSp(22) * 2.63,
                                    ),
                                    validator: (value) {
                                      if (value.isEmpty) {
                                        return 'Por favor ingrese su(s) Nombre(s)';
                                      } else {
                                        if (value.length < 4)
                                          return 'El nombre debe tener mas de 4 caracteres';
                                      }
                                      return null;
                                    }),
  

есть идеи?

Ответ №1:

добавьте labelText: 'Nombres', свойство в InputDecoration :

 decoration: InputDecoration(
                                  hintText: "Nombres",
                                  hintStyle: TextStyle(
                                      fontSize: scalador.setSp(22) * 2.63,
                                      color: Color(0xFF949494)),
                                ),
                                 labelText: 'Nombres',
                             )
  

источник :https://api.flutter.dev/flutter/material/TextFormField-class.html

Ответ №2:

Чтобы добавить желаемое текстовое поле в разделе «фокус», вам нужно будет указать несколько вещей. Для начала вам понадобится LabelText, который будет установлен в строку по вашему выбору. В вашем случае это, вероятно, было бы: LabelText: «Nombres». Далее вам понадобится enabledBorder: который вы можете назначить OutlineInputBorder (в котором вы можете указать радиус границы, сторону границы (цвет)) по своему вкусу. Как только у вас появится enabledBorder для случаев, когда пользователь не имеет его в «фокусе», вам понадобится focusedBorder: в котором вы снова назначите OutlineInputBorder() аналогично enabledBorder . Наконец, вам понадобится border: в котором вы можете задать ему OutlineInputBorder (и желаемый borderRadius внутри).

Это пример для вашей справки

 Padding(
  padding: EdgeInsets.all(10),
  child: new TextFormField(
    decoration: new InputDecoration(
      labelText: "Name",
      labelStyle: TextStyle(
        color: Color(0xFF264653),
      ),
      fillColor: Colors.white,
      enabledBorder: OutlineInputBorder(
        borderRadius: BorderRadius.circular(25.0),
        borderSide: BorderSide(
          color: Color(0xFF264653),
        ),
      ),
      focusedBorder: OutlineInputBorder(
          borderRadius: BorderRadius.circular(25.0),
          borderSide: BorderSide(color: Color(0xFF264653))),
      border: OutlineInputBorder(
        borderRadius: BorderRadius.circular(25.0),
      ),
    ),
  ),
),
  

В зависимости от того, что вы будете делать, я рекомендую ознакомиться с этой статьей: https://medium.com/swlh/working-with-forms-in-flutter-a176cca9449a и / или
https://medium.com/@mahmudahsan/how-to-create-validate-and-save-form-in-flutter-e80b4d2a70a4