W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
本頁面介紹如何在Flutter應用程序中輸入文本
TextField 是最常用的文本輸入widget.
默認情況下,TextField有一個下劃線裝飾(decoration)。您可以通過提供給decoration屬性設置一個InputDecoration來添加一個標簽、一個圖標、提示文字和錯誤文本。 要完全刪除裝飾(包括下劃線和為標簽保留的空間),將decoration明確設置為空即可。
TextFormField包裹一個TextField 并將其集成在Form中。你要提供一個驗證函數(shù)來檢查用戶的輸入是否滿足一定的約束(例如,一個電話號碼)或當你想將TextField與其他FormField集成時,使用TextFormField。
有兩種獲取用戶輸入的主要方法:
每當用戶輸入時,TextField會調(diào)用它的onChanged回調(diào)。 您可以處理此回調(diào)以查看用戶輸入的內(nèi)容。例如,如果您正在輸入搜索字段,則可能需要在用戶輸入時更新搜索結果。
一個更強大(但更精細)的方法是提供一個TextEditingController作為TextField的controller屬性。 在用戶輸入時,controller的text和selection屬性不斷的更新。要在這些屬性更改時得到通知,請使用controller的addListener方法監(jiān)聽控制器 。 (如果你添加了一個監(jiān)聽器,記得在你的State對象的dispose方法中刪除監(jiān)聽器 )。
該TextEditingController還可以讓您控制TextField的內(nèi)容。如果修改controller的text或selection的屬性,TextField將更新,以顯示修改后的文本或選中區(qū)間。 例如,您可以使用此功能來實現(xiàn)推薦內(nèi)容的自動補全。
以下是使用一個TextEditingController讀取TextField中用戶輸入的值的示例:
/// Opens an [AlertDialog] showing what the user typed.
class ExampleWidget extends StatefulWidget {
ExampleWidget({Key key}) : super(key: key);
@override
_ExampleWidgetState createState() => new _ExampleWidgetState();
}
/// State for [ExampleWidget] widgets.
class _ExampleWidgetState extends State<ExampleWidget> {
final TextEditingController _controller = new TextEditingController();
@override
Widget build(BuildContext context) {
return new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new TextField(
controller: _controller,
decoration: new InputDecoration(
hintText: 'Type something',
),
),
new RaisedButton(
onPressed: () {
showDialog(
context: context,
child: new AlertDialog(
title: new Text('What you typed'),
content: new Text(_controller.text),
),
);
},
child: new Text('DONE'),
),
],
);
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: