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()),能夠獲取輸入框的值,能夠設置輸入框的值等等。bash
TextEditingController _textEditingController = new TextEditingController();
new TextField(
controller: _textEditingController,
),
new RaisedButton(
onPressed: () {
print(_textEditingController.text);
_textEditingController.clear();
},
child: Text('清除'),
)
複製代碼
二、focusNode框架
這個屬性能夠用來監聽輸入框是否獲取(失去)焦點:async
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,
)
複製代碼
三、decorationide
這個屬性用來設置輸入框的一些樣式,好比先後圖標,提示文字,錯誤文字,佔位文字等等,下面來看一下能夠設置的東西(有點多,你們能夠有須要的時候再去挨個瞭解):學習
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,
),
),
)
複製代碼
四、keyboardTypeui
這個屬性是設置輸入框的輸入類型的,相似於 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等技術;在這裏你能獲得的不止是技術上的提高,還有一些學習經驗以及志同道合的朋友,趕快加入咱們,一塊兒學習,一塊兒進化吧!!!