我正在按编辑按钮启用文本字段的项目。现在,我希望用户现在将显示一个 Flink 的光标启用文本字段。有无论如何要这样做吗?
bvuwiixz1#
要聚焦一个TextField,你可以给予它一个FocusNode并请求聚焦。
TextField
FocusNode
import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: MyApp())); } class MyApp extends StatefulWidget { const MyApp({super.key}); @override MyAppState createState() => MyAppState(); } class MyAppState extends State<MyApp> { bool textFieldEnabled = false; late FocusNode myFocusNode; @override void initState() { super.initState(); myFocusNode = FocusNode(); } @override void dispose() { myFocusNode.dispose(); super.dispose(); } void setTextFieldEnabled() { setState(() { textFieldEnabled = true; }); WidgetsBinding.instance.addPostFrameCallback((_) { myFocusNode.requestFocus(); }); } @override Widget build(BuildContext context) { return Scaffold( body: Column(children: [ TextButton(onPressed: setTextFieldEnabled, child: const Text('enable')), TextField(enabled: textFieldEnabled, focusNode: myFocusNode) ])); } }
注意,一开始我以为你可以在修改textFieldEnabled之后直接调用myFocusNode.requestFocus();,但是这似乎不起作用,把它放在WidgetsBinding.instance.addPostFrameCallback中似乎解决了这个问题。
textFieldEnabled
myFocusNode.requestFocus();
WidgetsBinding.instance.addPostFrameCallback
1条答案
按热度按时间bvuwiixz1#
要聚焦一个
TextField
,你可以给予它一个FocusNode
并请求聚焦。注意,一开始我以为你可以在修改
textFieldEnabled
之后直接调用myFocusNode.requestFocus();
,但是这似乎不起作用,把它放在WidgetsBinding.instance.addPostFrameCallback
中似乎解决了这个问题。