Flutter 全局點擊空白處隱藏鍵盤實戰(zhàn)
老孟導讀:為什么要實現點擊空白處隱藏鍵盤?因為這是 iOS 平臺的默認行為,Android 平臺由于其彈出的鍵盤右上角默認帶有關閉鍵盤的按鈕,所以點擊空白處不會隱藏鍵盤。
對于單個頁面來說,通過為 TextField 添加 focusNode,點擊空白處時使 TextField 失去焦點,實現如下:
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, ), ), ), ); } }
當 App 中有多個頁面多個 TextField 時,此方式會增加大量重復的代碼,因此全局添加點擊空白處的監(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 頁面:
class DismissKeyboardDemo extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(), body: Center( child: TextField(), ), ); } }
效果和上面是一樣的,同樣可以實現點擊空白處隱藏鍵盤。
到此這篇關于Flutter 全局點擊空白處隱藏鍵盤實戰(zhàn)的文章就介紹到這了,更多相關Flutter 全局點擊空白處隱藏鍵盤內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Flutter使用SingleTickerProviderStateMixin報錯解決
這篇文章主要為大家介紹了Flutter使用SingleTickerProviderStateMixin報錯解決示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08Android實現音頻條形圖效果(仿音頻動畫無監(jiān)聽音頻輸入)
這篇文章主要介紹了Android實現音頻條形圖效果(仿音頻動畫無監(jiān)聽音頻輸入)的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09解決Android 6.0獲取wifi Mac地址為02:00:00:00:00:00問題
這篇文章主要介紹了Android 6.0獲取wifi Mac地址為02:00:00:00:00:00的解決方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-11-11