Flutter快速上手1.3:基礎(chǔ)控件之TextField

TextField的屬性

屬性名 類型 簡介
controller TextEditingController 輸入框的控制器熔掺,通常用于獲取輸入的內(nèi)容
focusNode FocusNode 用于輸入框的焦點管理和監(jiān)聽
decoration InputDecoration 輸入框的裝飾器省咨,用于修改外觀
keyboardType TextInputType 設(shè)置輸入類型,不同的輸入類型鍵盤會不一樣
textInputAction TextInputAction 用于設(shè)置鍵盤動作(一般位于右下角屯耸,默認是完成)
textCapitalization TextCapitalization 配置平臺鍵盤如何選擇大寫或小寫鍵盤。
style TextStyle 文本樣式
textAlign TextAlign 文本位置
textDirection TextDirection 文本顯示方向
autofocus bool 是否自動獲取焦點
obscureText bool 是否隱藏輸入的文字聘殖,通常用于密碼框
autocorrect bool 是否自動校驗
maxLines int 最大行數(shù)
maxLength int 輸入的最大字符數(shù)
maxLengthEnforced bool 配合maxLength使用瘪菌,達到最大長度時是否阻止輸入
onChanged ValueChanged<String> 輸入文本發(fā)生變化時回調(diào)
onEditingComplete VoidCallback 點擊鍵盤完成按鈕時觸發(fā)的回調(diào),無參數(shù)
onSubmitted ValueChanged<String> 點擊完成按鈕時觸發(fā)的回調(diào)毫目,該回調(diào)有參數(shù)蔬啡,參數(shù)即為輸入的值
inputFormatters List<TextInputFormatter> 對輸入文本的校驗
cursorWidth double 光標的寬度
cursorRadius Radius 光標的圓角
cursorColor Color 光標的顏色
keyboardAppearance Brightness 鍵盤的外觀,僅在iOS設(shè)備上支持
onTap GestureTapCallback 點擊輸入框時的回調(diào)
enabled bool 輸入框是否可用
readOnly bool 是否只讀

裝飾器 InputDecoration

屬性名 類型 簡介
icon Widget 設(shè)置位于輸入框前的圖標
labelText String 設(shè)置描述輸入框的標簽
labelStyle TextStyle 設(shè)置labelText的樣式
helperText String 幫助文本镀虐,位于輸入框下方箱蟆,如果errorText為空則不會顯示
helperStyle TextStyle 設(shè)置helperText的樣式
hintText String 提示文本,位于輸入框內(nèi)部
hintStyle TextStyle hintText的樣式
hintMaxLines int 提示文本最大行數(shù)
errorText String 錯誤文本信息提示
errorStyle TextStyle errorText的樣式
hasFloatingPlaceholder bool labelText是否浮動刮便,默認為true
isDense bool 輸入框是否為密集型空猜,默認為false,為true時,圖標及間距會變小
contentPadding EdgeInsetsGeometry 內(nèi)間距
isCollapsed bool 是否裝飾的大小與輸入字段的大小相同辈毯。
prefixIcon Widget 位于輸入框內(nèi)部起始位置的圖標
prefix Widget 預(yù)先填充的Widget坝疼,跟prefixText只能同時出現(xiàn)一個
prefixText String 預(yù)填充的文本,例如手機號前面預(yù)先加上區(qū)號等
prefixStyle TextStyle prefixText的樣式
suffixIcon Widget 位于輸入框尾部的圖標
suffix Widget 位于輸入框尾部的控件
suffixText String 位于尾部的填充文字
suffixStyle TextStyle suffixText的樣式
counter Widget 輸入框右下方的計數(shù)小控件谆沃,不能和counterText同時使用
counterText String 右下方顯示的文本钝凶,常用于顯示輸入的字符數(shù)量
counterStyle TextStyle counterText的樣式
filled bool 如果為true,則使用fillColor指定的顏色填充
fillColor Color 輸入框的背景顏色
errorBorder InputBorder errorText不為空唁影,且輸入框沒有焦點時要顯示的邊框
focusedBorder InputBorder 輸入框有焦點時的邊框耕陷,errorText必須為空
focusedErrorBorder InputBorder errorText不為空時,輸入框有焦點時的邊框
disabledBorder InputBorder 輸入框禁用時顯示的邊框据沈,errorText必須為空
enabledBorder InputBorder 輸入框可用時顯示的邊框哟沫,errorText必須為空
border InputBorder 正常情況下的邊框
enabled bool 輸入框是否可用
border的三種值
  • InputBorder.none 沒有邊框
  • OutlineInputBorder 線框
  • UnderlineInputBorder 底邊線,默認的
小技巧

當輸入框的默認線框無法滿足時卓舵,可以使用Container容器自定義邊框南用。這時候可以將裝飾器設(shè)置為InputDecoration.collapsed(hintText: 'hint')表示禁用裝飾線

以登錄為例????????????

1.定義的變量

final phoneTf = TextEditingController();
final pwdTf = TextEditingController();
bool showPhoneClear = false;
bool showPwdClear = false;
final FocusNode phoneFocusNode = FocusNode();
final FocusNode pwdFocusNode = FocusNode();

TextEditingController帶初始值

TextEditingController.fromValue(TextEditingValue(text: '手機號'));

2.輸入手機號

Container(
                    margin: const EdgeInsets.symmetric(horizontal: 15),
                    child: TextField(
                      //關(guān)聯(lián)焦點變量,處理輸入框失去焦點
                      focusNode: phoneFocusNode,
                      //關(guān)聯(lián)輸入框變量
                      controller: phoneTf,
                      //鍵盤類型
                      keyboardType: TextInputType.number,
                      //輸入校驗
                      inputFormatters: [
                        //設(shè)置只允許輸入數(shù)字
                        FilteringTextInputFormatter.allow(RegExp(r'[0-9]')),
                      ],
                      //最大字符數(shù)
                      maxLength: 11,
                      //輸入框獲取焦點的時候
                      onTap: () {
                        setState(() {
                          showPhoneClear = true;
                          showPwdClear = false;
                        });
                      },
                      //編輯完成掏湾,點擊鍵盤的完成按鈕裹虫,
                      onEditingComplete: () {
                        print('onEditingComplete');
                        //手機號輸入框失去焦點
                        phoneFocusNode.unfocus();
                        setState(() {
                          showPhoneClear = false;
                        });
                      },
                      //裝飾器
                      decoration: InputDecoration(
                        //手機號圖標
                        prefixIcon: const Icon(Icons.phone_android,size: 25, color: Colors.pinkAccent,),
                        //提示文字
                        hintText: '請輸入手機號',
                        //邊框
                        border: const OutlineInputBorder(
                          //圓角
                          borderRadius: BorderRadius.all(Radius.circular(15)),
                        ),
                        //后面清除按鈕和事件
                        suffixIcon: Visibility(
                          visible: showPhoneClear,
                          child: GestureDetector(
                            onTap: () {
                              phoneTf.clear();
                              print('jj');
                            },
                            //清除按鈕
                            child: const Icon(Icons.clear),
                          ),
                        ),
                      ),
                    ),
                  ),

3.輸入密碼

Container(
                    margin: const EdgeInsets.symmetric(horizontal: 15),
                    child: TextField(
                      focusNode: pwdFocusNode,
                      controller: pwdTf,
                      maxLength: 32,
                      obscureText: true,
                      //這個鍵盤兼容密碼密碼輸入字符
                      keyboardType: TextInputType.emailAddress,
                      onTap: () {
                        setState(() {
                          showPhoneClear = false;
                          showPwdClear = true;
                        });
                      },
                      onEditingComplete: () {
                        pwdFocusNode.unfocus();
                        setState(() {
                          showPwdClear = false;
                        });
                      },
                      decoration: InputDecoration(
                        prefixIcon: const Icon(Icons.lock,size: 25, color: Colors.pinkAccent),
                        hintText: '請輸入密碼',
                        suffixIcon: Visibility(
                          visible: showPwdClear,
                          child: GestureDetector(
                            onTap: () {
                              pwdTf.clear();
                              print('jj');
                            },
                            child: const Icon(Icons.clear),
                          ),
                        ),
                      ),
                    ),
                  ),
WX20220419-140214.png

本地Flutter 2.10.1,Mac版Android Studio Bumblebee | 2021.1.1 Patch 2
我是小栗子融击,初學(xué)Flutter 筑公,文章會根據(jù)學(xué)習(xí)進度不定時更新,請多多指教~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尊浪,一起剝皮案震驚了整個濱河市匣屡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拇涤,老刑警劉巖捣作,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鹅士,居然都是意外死亡券躁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門掉盅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來也拜,“玉大人,你說我怎么就攤上這事趾痘÷” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵永票,是天一觀的道長卵贱。 經(jīng)常有香客問我组力,道長敷燎,這世上最難降的妖魔是什么涵卵? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任提佣,我火速辦了婚禮,結(jié)果婚禮上方妖,老公的妹妹穿的比我還像新娘。我一直安慰自己罚攀,他們只是感情好党觅,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著斋泄,像睡著了一般杯瞻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上炫掐,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天魁莉,我揣著相機與錄音,去河邊找鬼募胃。 笑死旗唁,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的痹束。 我是一名探鬼主播检疫,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祷嘶!你這毒婦竟也來了屎媳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤论巍,失蹤者是張志新(化名)和其女友劉穎烛谊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘉汰,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡丹禀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了郑现。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片湃崩。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖接箫,靈堂內(nèi)的尸體忽然破棺而出攒读,到底是詐尸還是另有隱情,我是刑警寧澤辛友,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布薄扁,位于F島的核電站剪返,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏邓梅。R本人自食惡果不足惜脱盲,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望日缨。 院中可真熱鬧钱反,春花似錦、人聲如沸匣距。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毅待。三九已至尚卫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尸红,已是汗流浹背吱涉。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留外里,地道東北人怎爵。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像级乐,于是被迫代替她去往敵國和親疙咸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容