文本字段无法在Flutter中编辑文本

时间:2019-04-19 09:30:35

标签: android dart flutter

我已经通过控制器在动态textfield中设置了值,但是仅当光标在输入的文本周围移动时,我才允许编辑值。  我试图以此方式设置价值

shippingNameController.value = shippingNameController.value.copyWith(text:name);

但是在尝试上述解决方案之前,我将动态文本字段命名为Billing name(帐单名称),并且想要更新送货名称中的billing name(帐单名称)的值。

shippingNameController.text=name;

当我使用它时它不起作用,它在文本字段的开头显示光标,而不更新值。

new TextField(
          style: TextStyle(fontFamily: 'semibold',color: MyColors.colorPrimary),
          keyboardType:field.type=='STR'||field.type=='EMAIL'? TextInputType.text:TextInputType.number,
          textInputAction: TextInputAction.done,
          decoration: InputDecoration(contentPadding:EdgeInsets.all(8.0),
            hintStyle: TextStyle(fontFamily: 'semibold',color: MyColors.colorPrimary),
            border: InputBorder.none,),
          controller: shippingNameController,
          onChanged: (String val) {
            enteredValue(field,val);
            setState(() {
              shippingNameController.text = val;
              sShppingfieldList[p].fieldvalue=val;
            });
          },),

enter image description here

4 个答案:

答案 0 :(得分:1)

 onSaved: (value){
                  setState(() {                     
                  _state = value
                 },
 onChanged:(v){
                _state = v;
                 print(_state)
              },

这对我有用。

答案 1 :(得分:0)

尝试一下

我想,如果您想设置文字,则必须这样做

setState((){
    shippingNameController.text = "abc";
    });

答案 2 :(得分:0)

类似的事情应该起作用:

child: TextField(
    keyboardType: TextInputType.text,
    onChanged: (name) {
        setState((){
            shippingNameController.text = name;
        });
    },         
),

答案 3 :(得分:0)

是否已将侦听器添加到控制器。添加完整的代码。