這是【Flutter 問(wèn)題系列第 80 篇】,如果覺(jué)得有用的話,歡迎關(guān)注專欄。
博文當(dāng)前所用 Flutter SDK:3.10.5、Dart SDK:3.0.5
一:?jiǎn)栴}描述
在輸入用戶名稱、簡(jiǎn)介等內(nèi)容時(shí),一般我們都會(huì)限制輸入框內(nèi)最大可輸入數(shù)(通過(guò) TextField 組件的 maxLength 屬性),如下圖限制簡(jiǎn)介最多10個(gè)字
正常輸入漢字是沒(méi)有問(wèn)題的,我們的限制起到了作用??僧?dāng)最后輸入了一個(gè)表情符號(hào)時(shí),我們獲取輸入內(nèi)容的長(zhǎng)度會(huì)超出限制,如下圖所示
這肯定不是我們需要的,怎么處理這種情況呢?
二:解決方案
其實(shí)解決的話也很簡(jiǎn)單,不直接使用字符串的長(zhǎng)度,而是使用字符串的字符長(zhǎng)度,也就是字符串的 characters
屬性的長(zhǎng)度。
修改前
onChanged: (str) {
if (str.length >= 10) {
debugPrint("最多可輸入10個(gè)字符");
}
// do something
},
修改后
onChanged: (str) {
if (str.characters.length >= 10) {
debugPrint("最多可輸入10個(gè)字符");
}
// do something
},
修改后的效果如下圖所示
String 內(nèi)部用來(lái)存儲(chǔ)的結(jié)果是一個(gè) char 字符數(shù)組,Character 類用于對(duì)單個(gè)字符進(jìn)行操作,是對(duì) char 的封裝。如果我們判斷輸入內(nèi)容的長(zhǎng)度是否大于限制的長(zhǎng)度時(shí),應(yīng)該用的是字符長(zhǎng)度,而不是字符串長(zhǎng)度。
至此,關(guān)于 TextField 輸入框組件限制可輸入的最大長(zhǎng)度后,輸入的內(nèi)容中包含表情符號(hào)時(shí),獲取輸入的內(nèi)容數(shù)還是會(huì)超出限制的問(wèn)題便說(shuō)到這里。
你的問(wèn)題得到解決了嗎?歡迎在評(píng)論區(qū)留言。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-812573.html
贈(zèng)人玫瑰,手有余香,如果覺(jué)得文章不錯(cuò),希望可以給個(gè)一鍵三連,感謝。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-812573.html
結(jié)束語(yǔ)
Google 的 Flutter 越來(lái)越火,截止 2024年1月17日 GitHub 標(biāo)星已達(dá) 159K,F(xiàn)lutter 毅然是一種趨勢(shì),所以作為前端開發(fā)者,沒(méi)有理由不趁早去學(xué)習(xí)。
無(wú)論你是 Flutter 新手還是已經(jīng)入門了,不妨先點(diǎn)個(gè)關(guān)注,后續(xù)我會(huì)將 Flutter 中的常用組件(含有源碼分析、組件的用法及注意事項(xiàng))以及可能遇到的問(wèn)題寫到 CSDN 博客中,希望自己學(xué)習(xí)的同時(shí),也可以幫助更多的人。
到了這里,關(guān)于【Flutter 問(wèn)題系列第 80 篇】TextField 輸入框組件限制可輸入的最大長(zhǎng)度后,輸入的內(nèi)容中包含表情符號(hào)時(shí),獲取輸入的內(nèi)容數(shù)還是會(huì)超出限制的問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!