发现我正在使用
Listener
的 onPointerDown 方法在用户单击应用程序中的其他任何位置时移除焦点。但这导致了错误。
但现在的问题是,如果有人点击其他地方,如何移除焦点。
Listener(
onPointerDown: (_) {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus &&
currentFocus.focusedChild != null) {
currentFocus.focusedChild.unfocus();
}
},)
我正在尝试在我的 Flutter 应用程序的 TextFormField
中添加 Copy 和
Paste功能。我尝试了很多方法,但还是不行。
这是我的代码
Widget textFormWidget(
String label, TextEditingController controller, bool enabled) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: TextFormField(
enabled: true,
enableInteractiveSelection: true,
readOnly: false,
toolbarOptions:
ToolbarOptions(paste: true, cut: true, selectAll: true, copy: true),
textAlign: TextAlign.center,
cursorColor: Colors.white,
cursorWidth: 3,
controller: controller,
style: bold.copyWith(fontSize: 18),
decoration: InputDecoration(
focusColor: Colors.white,
hoverColor: Colors.white,
labelText: label,
alignLabelWithHint: true,
labelStyle: normal),
),
);
}
将此称为
textFormWidget('Name', nameController, true),
如果您需要更多代码或信息,请评论。
我也遇到了同样的问题,无法复制和粘贴。所以我删除了
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus &&
currentFocus.focusedChild != null) {
currentFocus.focusedChild.unfocus();
}
与
onPointerDown
分开,并且为了在有人点击其他地方时移除焦点,我用 MaterialApp
包裹我的 GestureDetector
并添加了以下内容:
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
代码:
GestureDetector(
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
child: MaterialApp(
//your code
),
);
@Nibha Jain,谢谢你的建议很有帮助。使用
FocusScope.of(context).canRequestFocus
解决了我的问题。 🥂