亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Flutter 完美的驗(yàn)證碼輸入框?qū)崿F(xiàn)

 更新時(shí)間:2020年04月09日 09:29:18   作者:老孟  
這篇文章主要介紹了Flutter 完美的驗(yàn)證碼輸入框?qū)崿F(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

老孟導(dǎo)讀:剛開始看到這個(gè)功能的時(shí)候一定覺(jué)得so easy,開始的時(shí)候我也是這么覺(jué)得的,這還不簡(jiǎn)單,然而真正寫的時(shí)候才發(fā)現(xiàn)并沒(méi)有想象的那么簡(jiǎn)單。

先上圖,不上圖你們都不想看,我難啊,到Github:https://github.com/781238222/flutter-do 上給個(gè)小星星可還行,如果能fork一下,那更是感激不盡。

言歸正傳,完成驗(yàn)證碼輸入框經(jīng)歷了4個(gè)階段,雖然前3個(gè)嘗試是失敗的,但也想和大家分享下,避免大家再走彎路。

第一階段:開始的時(shí)候,我認(rèn)為直接修改TextField控件,改改外觀就可以了,所以我就直接去改TextField的屬性,研究了一遍,發(fā)現(xiàn)無(wú)法達(dá)到要求,系統(tǒng)提供的屬性無(wú)法達(dá)到我的要求。

第二階段:既然原生的TextField無(wú)法實(shí)現(xiàn)我的效果,那就重寫一個(gè)(并不是全部重寫,而是把源代碼copy出來(lái),修改控制外觀的代碼),于是我就去copy源代碼了,可真正copy的時(shí)候發(fā)現(xiàn)TextField的關(guān)系比較復(fù)雜,并不是一個(gè)簡(jiǎn)單的StatefulWidget控件,而且需要計(jì)算字符的寬度,此方案雖然能實(shí)現(xiàn),但想想就復(fù)雜,果斷拋棄。

第三階段:用6個(gè)TextField,每一個(gè)控制一個(gè)驗(yàn)證碼,雖然樣式及布局上很容易達(dá)到要求,但焦點(diǎn)控制問(wèn)題非常致命,此方案也pass。

第四階段:經(jīng)過(guò)上面失敗的經(jīng)歷,最后我才用如下方案:一個(gè)TextField用于輸入,而驗(yàn)證碼的顯示使用Container,驗(yàn)證碼覆蓋在TextField之上,用戶無(wú)法感知到TextField,這是目前為止我發(fā)現(xiàn)的最完美的方案。

焦點(diǎn)問(wèn)題

正常情況下,出現(xiàn)驗(yàn)證碼的頁(yè)面會(huì)彈出鍵盤,此效果很好實(shí)現(xiàn),指需給TextField指定自動(dòng)獲取焦點(diǎn)即可,代碼如下:

TextField(
  autofocus:true,
  ...
)

如果頁(yè)面還有其他輸入框,那么就不一定要獲取焦點(diǎn)了,因此是否獲取焦點(diǎn)需要交給用戶來(lái)決定。

如果開始沒(méi)有獲取焦點(diǎn)就出現(xiàn)了一個(gè)問(wèn)題,用戶點(diǎn)擊“驗(yàn)證碼”的時(shí)候需要獲取焦點(diǎn),獲取焦點(diǎn)方法如下:

GestureDetector(
 onTap: () {
  FocusScope.of(context).requestFocus(_focusNode);
 },
 ...
)

給整個(gè)控件的外層添加點(diǎn)擊事件,_focusNode為TextField的focusNode

輸入完成后,通常需要關(guān)閉鍵盤,即TextField失去焦點(diǎn),失去焦點(diǎn)方法如下:

_focusNode.unfocus();

使用

使用非常簡(jiǎn)單,如下:

Container(
 height: 45,
 child: VerificationBox(),
)

效果如下:

設(shè)置驗(yàn)證碼的數(shù)量,比如設(shè)置4個(gè):

VerificationBox(
 count: 4,
)

效果如下:

設(shè)置樣式,包括邊框的顏色、寬度、圓角:

VerificationBox(
 borderColor: Colors.lightBlue,
 borderWidth: 3,
 borderRadius: 50,
)

效果如下:

除了“盒子”樣式,還支持下劃線樣式:

VerificationBox(
 type: VerificationBoxItemType.underline,
)

效果如下:

設(shè)置數(shù)字的樣式:

VerificationBox(
 textStyle: TextStyle(color: Colors.lightBlue),
)

效果如下:

顯示光標(biāo),設(shè)置光標(biāo)樣式:

VerificationBox(
 showCursor: true,
 cursorWidth: 2,
 cursorColor: Colors.red,
 cursorIndent: 10,
 cursorEndIndent: 10,
)

效果如下:

還可以設(shè)置光標(biāo)為整個(gè)邊框,如下:

VerificationBox(
 focusBorderColor: Colors.lightBlue,
)

效果如下:

終極大招,如果你覺(jué)得這個(gè)效果不好,你可以自定義decoration

VerificationBox(
  decoration: BoxDecoration(
   image: DecorationImage(image: AssetImage('images/box.png')),
  ),
  textStyle: TextStyle(color: Colors.lightBlue),
 ),
)

效果如下:

驗(yàn)證碼輸入完成后回調(diào)onSubmitted,用法如下:

VerificationBox(
 onSubmitted: (value){
  print('$value');
 },
)

輸入完成后,默認(rèn)鍵盤消失,設(shè)置為不消失,代碼如下:

VerificationBox(
 unfocus: false,
)

到此這篇關(guān)于Flutter 完美的驗(yàn)證碼輸入框?qū)崿F(xiàn)的文章就介紹到這了,更多相關(guān)Flutter 驗(yàn)證碼輸入框內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android源碼使用16進(jìn)制進(jìn)行狀態(tài)管理的方法

    Android源碼使用16進(jìn)制進(jìn)行狀態(tài)管理的方法

    這篇文章主要介紹了Android源碼使用16進(jìn)制進(jìn)行狀態(tài)管理的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • Android實(shí)現(xiàn)紅包雨動(dòng)畫效果

    Android實(shí)現(xiàn)紅包雨動(dòng)畫效果

    本篇文章主要介紹了Android實(shí)現(xiàn)紅包雨動(dòng)畫效果,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Android信息界面編輯及組合控件的封裝

    Android信息界面編輯及組合控件的封裝

    這篇文章主要為大家詳細(xì)介紹了Android信息界面的編輯,及組合控件的封裝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Android開發(fā)中Activity屬性設(shè)置小結(jié)

    Android開發(fā)中Activity屬性設(shè)置小結(jié)

    Android應(yīng)用開發(fā)中會(huì)經(jīng)常遇到Activity組件的使用,下面就來(lái)講解下Activity組件。Activity的生命周期、通信方式和IntentFilter等內(nèi)容,并提供了一些日常開發(fā)中經(jīng)常用到的關(guān)于Activity的技巧和方法。通過(guò)本文,你可以進(jìn)一步了接Android中Activity的運(yùn)作方式。
    2015-05-05
  • Android item長(zhǎng)按刪除功能

    Android item長(zhǎng)按刪除功能

    這篇文章主要介紹了Android item長(zhǎng)按刪除功能,在文章底部給大家介紹了android 長(zhǎng)按刪除listview的item的實(shí)例代碼,需要的的朋友參考下
    2017-07-07
  • Flutter 全局點(diǎn)擊空白處隱藏鍵盤實(shí)戰(zhàn)

    Flutter 全局點(diǎn)擊空白處隱藏鍵盤實(shí)戰(zhàn)

    這篇文章主要介紹了Flutter 全局點(diǎn)擊空白處隱藏鍵盤實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Android實(shí)現(xiàn)靜默拍照功能

    Android實(shí)現(xiàn)靜默拍照功能

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)靜默拍照,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Android的ListView多選刪除操作實(shí)現(xiàn)代碼

    Android的ListView多選刪除操作實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了Android的ListView多選刪除操作實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Android拖拽助手ViewDragHelper的創(chuàng)建與使用實(shí)例

    Android拖拽助手ViewDragHelper的創(chuàng)建與使用實(shí)例

    ViewDragHelper是針對(duì) ViewGroup 中的拖拽和重新定位 views 操作時(shí)提供了一系列非常有用的方法和狀態(tài)追蹤,下面這篇文章主要給大家介紹了關(guān)于Android拖拽助手ViewDragHelper的創(chuàng)建與使用的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Android項(xiàng)目實(shí)戰(zhàn)之仿網(wǎng)易頂部導(dǎo)航欄效果

    Android項(xiàng)目實(shí)戰(zhàn)之仿網(wǎng)易頂部導(dǎo)航欄效果

    這篇文章主要為大家詳細(xì)介紹了Android項(xiàng)目實(shí)戰(zhàn)之仿網(wǎng)易頂部導(dǎo)航欄效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-05-05

最新評(píng)論