Флаттер TextField с maxLength и - PullRequest
       67

Флаттер TextField с maxLength и

1 голос
/ 04 февраля 2020

Мне нужна текстовая область с принудительной максимальной длиной 250 символов и ее меткой, выровненной по тексту подсказки. Мой код ниже.

Однако виджет отображает текст поверх подсказки. Кто-нибудь знает решение? Это как если бы виджет счетчика заставлял фактическое текстовое поле двигаться вверх.

TextField с maxLength = 250 и alignLabelWithHint = true

TextField(
    expands: false,
    minLines: null,
    maxLines: null,
    maxLengthEnforced: maxLengthEnforced,
    maxLength: maxLength,
    controller: controller,
    onChanged: (String value){
      print(value);
    },
    cursorColor: Colors.deepOrange,
    keyboardType: keyboardType,
    decoration: InputDecoration(

        alignLabelWithHint: true,
        labelText: text,
        labelStyle: TextStyle(color: Colors.grey),
        hintText: text,
        prefixIcon: Container(
          child: Column(
            children: <Widget>[
              Container(
                margin: EdgeInsets.only(top: 15.0),
                child: Material(
                  elevation: 0,
                  color: Colors.white,
                  borderRadius: BorderRadius.all(Radius.circular(30)),
                  child: Icon(
                    icon,
                    color: Colors.red,
                  ),
                ),
              ),
            ],
          ),
        ),
        border: InputBorder.none,
        contentPadding: EdgeInsets.only(right: 10, top: 5, bottom: 5)),
)

1 Ответ

0 голосов
/ 17 марта 2020

Цель подсказки - исчезнуть, когда пользователь начнет печатать. Я попробовал ваш код, и он работал без проблем.

TextField(
                  expands: false,
                  minLines: null,
                  maxLines: null,
                  maxLengthEnforced: true,
                  maxLength: 250,
                  // controller: controller,
                  onChanged: (String value) {
                    print(value);
                  },
                  cursorColor: Colors.deepOrange,
                  // keyboardType: keyboardType,
                  decoration: InputDecoration(
                      alignLabelWithHint: true,
                      labelText: "hi",
                      labelStyle: TextStyle(color: Colors.grey),
                      hintText: "hi",
                      prefixIcon: Container(
                        child: Column(
                          children: <Widget>[
                            Container(
                              margin: EdgeInsets.only(top: 15.0),
                              child: Material(
                                elevation: 0,
                                color: Colors.white,
                                borderRadius:
                                    BorderRadius.all(Radius.circular(30)),
                                child: Icon(
                                  Icons.highlight,
                                  color: Colors.red,
                                ),
                              ),
                            ),
                          ],
                        ),
                      ),
                      border: InputBorder.none,
                      contentPadding:
                          EdgeInsets.only(right: 10, top: 5, bottom: 5)),
                ),
...