瞎扯
如題,文本輸入.沒啥好扯的.
Input
TextField
是最常用的文本輸入widget.
默認情況下,TextField
有一個下劃線裝飾(decoration)。您可以通過提供給decoration
屬性設置一個InputDecoration
來添加一個標籤、一個圖標、提示文字和錯誤文本。 要完全刪除裝飾(包括下劃線和爲標籤保留的空間),將decoration明確設置爲空即可。
TextFormField
包裹一個TextField
並將其集成在Form
中。你要提供一個驗證函數來檢查用戶的輸入是否滿足一定的約束(例如,一個電話號碼)或當你想將TextField
與其他FormField
集成時,使用TextFormField
。
獲取用戶輸入
有兩種獲取用戶輸入的主要方法::
- 處理
onChanged
回調 - 提供一個
TextEditingController
.
onChanged
每當用戶輸入時,TextField會調用它的onChanged
回調。 您可以處理此回調以查看用戶輸入的內容。例如,如果您正在輸入搜索字段,則可能需要在用戶輸入時更新搜索結果。
TextEditingController
一個更強大(但更精細)的方法是提供一個TextEditingController
作爲TextField
的controller
屬性。 在用戶輸入時,controller的text
和selection
屬性不斷的更新。要在這些屬性更改時得到通知,請使用controller的addListener
方法監聽控制器 。 (如果你添加了一個監聽器,記得在你的State對象的dispose方法中刪除監聽器 )。
該TextEditingController
還可以讓您控制TextField
的內容。如果修改controller的text
或selection
的屬性,TextField
將更新,以顯示修改後的文本或選中區間。 例如,您可以使用此功能來實現推薦內容的自動補全。
new TextField(
controller: _controller, //控制器
decoration: new InputDecoration(
hintText: '請輸入',
),
),