Flutter 全局點(diǎn)擊空白處隱藏鍵盤實(shí)戰(zhàn)
老孟導(dǎo)讀:為什么要實(shí)現(xiàn)點(diǎn)擊空白處隱藏鍵盤?因?yàn)檫@是 iOS 平臺(tái)的默認(rèn)行為,Android 平臺(tái)由于其彈出的鍵盤右上角默認(rèn)帶有關(guān)閉鍵盤的按鈕,所以點(diǎn)擊空白處不會(huì)隱藏鍵盤。
對(duì)于單個(gè)頁(yè)面來(lái)說,通過為 TextField 添加 focusNode,點(diǎn)擊空白處時(shí)使 TextField 失去焦點(diǎn),實(shí)現(xiàn)如下:
class DismissKeyboardDemo extends StatelessWidget {
final FocusNode focusNode = FocusNode();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: GestureDetector(
onTap: () {
focusNode.unfocus();
},
child: Container(
color: Colors.transparent,
alignment: Alignment.center,
child: TextField(
focusNode: focusNode,
),
),
),
);
}
}

當(dāng) App 中有多個(gè)頁(yè)面多個(gè) TextField 時(shí),此方式會(huì)增加大量重復(fù)的代碼,因此全局添加點(diǎn)擊空白處的監(jiān)聽:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
builder: (context, child) => Scaffold(
body: GestureDetector(
onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus &&
currentFocus.focusedChild != null) {
FocusManager.instance.primaryFocus.unfocus();
}
},
child: child,
),
),
home: DismissKeyboardDemo(),
);
}
}
也可以使用如下方式隱藏鍵盤:
SystemChannels.textInput.invokeMethod('TextInput.hide');
修改 DismissKeyboardDemo 頁(yè)面:
class DismissKeyboardDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: TextField(),
),
);
}
}
效果和上面是一樣的,同樣可以實(shí)現(xiàn)點(diǎn)擊空白處隱藏鍵盤。
到此這篇關(guān)于Flutter 全局點(diǎn)擊空白處隱藏鍵盤實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)Flutter 全局點(diǎn)擊空白處隱藏鍵盤內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Flutter使用SingleTickerProviderStateMixin報(bào)錯(cuò)解決
這篇文章主要為大家介紹了Flutter使用SingleTickerProviderStateMixin報(bào)錯(cuò)解決示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Android實(shí)現(xiàn)音頻條形圖效果(仿音頻動(dòng)畫無(wú)監(jiān)聽音頻輸入)
這篇文章主要介紹了Android實(shí)現(xiàn)音頻條形圖效果(仿音頻動(dòng)畫無(wú)監(jiān)聽音頻輸入)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
Android 文件操作詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了 Android 文件操作詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-02-02
Compose?動(dòng)畫藝術(shù)之屬性動(dòng)畫探索
這篇文章主要介紹了Compose動(dòng)畫藝術(shù)之屬性動(dòng)畫探索,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
AndroidImageSlider實(shí)現(xiàn)炫酷輪播廣告效果
這篇文章主要為大家詳細(xì)介紹了AndroidImageSlider實(shí)現(xiàn)炫酷輪播廣告效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
解決Android 6.0獲取wifi Mac地址為02:00:00:00:00:00問題
這篇文章主要介紹了Android 6.0獲取wifi Mac地址為02:00:00:00:00:00的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11
Android 實(shí)現(xiàn)帶頭部文字輸入框的自定義控件
這篇文章主要介紹了Android 實(shí)現(xiàn)帶頭部文字輸入框的自定義控件,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下2021-04-04
php使用phpmailer發(fā)送郵件實(shí)例解析
這篇文章主要為大家詳細(xì)解析了php使用phpmailer發(fā)送郵件實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07
Android SD卡上文件操作及記錄日志操作實(shí)例分析
這篇文章主要介紹了Android SD卡上文件操作及記錄日志操作的方法,涉及Android針對(duì)SD卡與文件操作的相關(guān)技巧,需要的朋友可以參考下2016-01-01

