Google
前兩天發佈了 Flutter 1.0
正式版本,正式版發佈以後,LZ身邊愈來愈多的人都開始入坑了,不得不說 Flutter
框架的魅力仍是很吸引人的哈,因此咱們更要抓緊學習了;以前我寫了兩篇文章來介紹 Flutter中的Text組件 和 Flutter中的Image組件,今天咱們繼續學習輸入框 TextFiled
組件,話很少說,先上圖:前端
先來看一下TextFiled的構造方法:git
const TextField({ Key key, this.controller, this.focusNode, this.decoration = const InputDecoration(), TextInputType keyboardType, this.textInputAction, this.textCapitalization = TextCapitalization.none, this.style, this.textAlign = TextAlign.start, //相似Text組件 this.textDirection, //相似Text組件 this.autofocus = false, this.obscureText = false, this.autocorrect = true, this.maxLines = 1, this.maxLength, this.maxLengthEnforced = true, this.onChanged, this.onEditingComplete, this.onSubmitted, this.inputFormatters, this.enabled, this.cursorWidth = 2.0, this.cursorRadius, this.cursorColor, this.keyboardAppearance, this.scrollPadding = const EdgeInsets.all(20.0), this.enableInteractiveSelection = true, this.onTap, })
哇,乍一看好多配置啊,別急大兄弟,有不少咱們在講 Text
組件的時候已經講過的,接下來咱們一個一個來看這些屬性:github
一、controllerapi
根據字面意思咱們就能夠知道,這是一個控制器,毫無疑問固然是控制 TextField
組件的了,用處有不少,能夠監聽輸入框的輸入(經過controller.addListener()),能夠獲取輸入框的值,能夠設置輸入框的值等等。框架
TextEditingController _textEditingController = new TextEditingController(); new TextField( controller: _textEditingController, ), new RaisedButton( onPressed: () { print(_textEditingController.text); _textEditingController.clear(); }, child: Text('清除'), )
二、focusNodeasync
這個屬性能夠用來監聽輸入框是否獲取(失去)焦點:ide
FocusNode _focusNode = new FocusNode(); @override void initState() { super.initState(); _focusNode.addListener(_focusNodeListener); } Future<Null> _focusNodeListener() async { if (_focusNode.hasFocus) { print('獲取焦點'); } else { print('失去焦點'); } } new TextField( focusNode: _focusNode, )
三、decoration學習
這個屬性用來設置輸入框的一些樣式,好比先後圖標,提示文字,錯誤文字,佔位文字等等,下面來看一下能夠設置的東西(有點多,你們能夠有須要的時候再去挨個瞭解):this
const InputDecoration({ this.icon, //輸入框前面的圖片(在下劃線外面) this.labelText, //頂部提示文字(獲取焦點以後會移動到輸入框上方) this.labelStyle, this.helperText, //底部提示文字(不會移動) this.helperStyle, this.hintText, //佔位文字 this.hintStyle, this.errorText, //相似helperText this.errorStyle, this.errorMaxLines, this.hasFloatingPlaceholder = true, this.isDense, this.contentPadding, //輸入內容的邊距,默認有一個邊距,能夠手動設置 this.prefixIcon, //輸入框前面的圖片(在下劃線裏面) this.prefix, this.prefixText, this.prefixStyle, this.suffixIcon, //輸入框後面的圖片(在下劃線裏面) this.suffix, this.suffixText, this.suffixStyle, this.counterText, this.counterStyle, this.filled, this.fillColor, this.errorBorder, this.focusedBorder, this.focusedErrorBorder, this.disabledBorder, this.enabledBorder, this.border, //輸入框邊框線(默認是下劃線,也能夠是none,也能夠是一個框) this.enabled = true, this.semanticCounterText, })
new TextField( decoration: InputDecoration( labelText: '請輸入手機號', //設置輸入框前面有一個電話的按鈕 suffixIcon prefixIcon: Icon(Icons.phone), labelStyle: TextStyle( fontSize: 14, color: Colors.grey, ), ), )
四、keyboardTypeurl
這個屬性是設置輸入框的輸入類型的,相似於 Android
中的 InputType
,選值有如下幾個:
new TextField( keyboardType: TextInputType.number, )
五、obscureText
這個屬性用來控制顯示隱藏用戶輸入的內容(密文/明文顯示)。
六、textInputAction
這個屬性用來控制彈出的鍵盤中右下角的按鈕,這是一個枚舉值,有不少種形式(下面舉幾個例子):
你們能夠手動試試各個枚舉值的效果。
七、TextCapitalization
這個屬性用來控制輸入內容的大小寫設置,一樣是一個枚舉值,來看一下具體的值及效果:
八、onChanged
這個屬性用來監聽輸入框的輸入,相似Android的TextWatch,可是它只有輸入後的值:
new TextField( onChanged: (String content) { print('content--->$content'); }, )
九、cursorWidth、cursorRadius、cursorColor
這幾個屬性用來設置輸入時候的光標。
new TextField( decoration: InputDecoration( hintText: '光標設置', hintStyle: TextStyle( fontSize: 14, color: Colors.grey, ), ), cursorColor: Colors.purple, cursorWidth: 6, cursorRadius: Radius.elliptical(2, 8), )
代碼已上傳至Github
歡迎關注個人我的公衆號【IT先森養成記】,專一大前端技術分享,包含Android,Java,Kotlin,Flutter,HTML,CSS,JS等技術;在這裏你能獲得的不止是技術上的提高,還有一些學習經驗以及志同道合的朋友,趕快加入咱們,一塊兒學習,一塊兒進化吧!!!