我有一個表單頁面,并且有幾個 TextFields,我想在單擊一個特定文本欄位之外呼叫一個函式。是否有任何 TextField 引數可以滿足我的目的或以任何方式做到這一點?
uj5u.com熱心網友回復:
TextFormField 有 focusNode 屬性,focusNode 有 addListener 回呼。當 TextFormField 具有焦點和 textformfield 失去焦點時呼叫它,在 focusnode 的幫助下,我們可以在單擊特定文本欄位外部時呼叫方法。
class _MyWidgetState extends State<MyWidget> {
FocusNode firstFocusNode = FocusNode();
FocusNode secondFocusNode = FocusNode();
@override
void initState() {
super.initState();
firstFocusNode.addListener(() {
if (!firstFocusNode.hasFocus) {
method();
}
});
}
void method() {
print("User clicked outside the Text Form Field");
}
@override
void dispose()
{
firstFocusNode.removeListener((){});
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(children: [
TextFormField(focusNode: firstFocusNode),
TextFormField(
focusNode: secondFocusNode,
)
]));
}
}
uj5u.com熱心網友回復:
您正在尋找的解決方案是gestureDetector,但如果您只想在表單區域內但在文本欄位外點擊時呼叫該函式,則它取決于您要呼叫該函式的位置,然后用手勢檢測器包裝表單并使用onTap:() {},或者如果您想在整個螢屏上點擊但在文本欄位之外呼叫相同的內容,請將其包裹在整個腳手架上。
new Scaffold(
body: new GestureDetector(
onTap: () {
FocusScope.of(context).requestFocus(new FocusNode());
//this function will remove the keyboard.
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/412717.html
標籤:
