输入值时如何动态更改文本字段的宽度

时间:2019-12-12 04:53:05

标签: android flutter textfield

我想在输入值时动态更改文本字段的宽度以适合所有输入文本。 这就是我尝试过的。

var valueIncreaser = 30;
var textfieldSpanValue = 50.0;

Container(
  width: textfieldSpanValue,
  child: TextFormField(              
              onChanged: (text) {
                setState(() {
                  textfieldSpanValue = 20;
                  textfieldSpanValue = valueIncreaser + textfieldSpanValue * textfieldSpanValue;
                });
              },
              controller: myController,
              maxLength: 10,
              maxLengthEnforced: true,
              keyboardType: TextInputType.number,
              inputFormatters: <TextInputFormatter>[
                WhitelistingTextInputFormatter.digitsOnly
              ],
              ),
)

我想要看起来像这样的东西。 Larger TextField

Smaller TextField

1 个答案:

答案 0 :(得分:2)

您的代码中似乎有一些简单的逻辑错误。您需要做的就是将宽度增量逻辑设置为此:

textfieldSpanValue = valueIncreaser + textfieldSpanValue * text.length;

var valueIncreaser = 30;
var textfieldSpanValue = 50.0;

Container(
  width: textfieldSpanValue,
  child: TextFormField(              
              onChanged: (text) {
                setState(() {
                   textfieldSpanValue = 20;
                  textfieldSpanValue =
                      valueIncreaser + textfieldSpanValue * text.length;
                });
              },
              controller: myController,
              maxLength: 10,
              maxLengthEnforced: true,
              keyboardType: TextInputType.number,
              inputFormatters: <TextInputFormatter>[
                WhitelistingTextInputFormatter.digitsOnly
              ],
              ),
)