2017-07-06 83 views
0

TextField小部件似乎沒有「限制」屬性來限制可鍵入的字符數。我如何強制在TextField Widget中只能輸入一定數量的字符作爲輸入。我試着看看裝修房產,並可能在某種程度上設置了限制,但那似乎也不起作用。我應該使用不同的小工具嗎?如何限制文本字段的大小?

回答

1

我不得不添加一個額外的片段,以什麼RSproute提到。完整的代碼在這裏:

TextEditingController _controller = new TextEditingController(); 
String text = ""; // empty string to carry what was there before it 
onChanged 
int maxLength = ... 
... 
new TextField(
    controller: _controller, 
    onChange: (String newVal) { 
     if(newVal.length <= maxLength){ 
      text = newVal; 
     }else{ 
      _controller.value = new TextEditingValue(
       text: text, 
       selection: new TextSelection(
        baseOffset: maxLength, 
        extentOffset: maxLength, 
        affinity: TextAffinity.downstream, 
        isDirectional: false 
       ), 
       composing: new TextRange(
        start: 0, end: maxLength 
       ) 
      ); 
      _controller.text = text; 
     } 
    } 
); 
1

您可以使用TextEditingController控制關於文本字段的所有內容。因此,如果您將這些信息與TextField中的onChanged事件配對,您可以在其中執行任何邏輯。例如:

TextEditingController _controller = new TextEditingController(); 
String text = ""; // empty string to carry what was there before it onChanged 
int maxLength = ... 
... 
new TextField(
    controller: _controller, 
    onChange: (String newVal) { 
     if(newVal.length <= maxLength){ 
      text = newVal; 
     }else{ 
      _controller.text = text; 
     } 

    } 
) 

我能夠控制文本字段留指引的範圍內,因爲如果它曾經越過它,它會恢復到什麼是最後的類型之前。