复制和粘贴在 Flutter 的 TextFormField 和 TextField 中不起作用

问题描述 投票:0回答:2

已解决:复制和粘贴在 TextFormField 中不起作用

发现我正在使用

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),

如果您需要更多代码或信息,请评论。

flutter flutter-layout flutter-textinputfield
2个回答
1
投票

我也遇到了同样的问题,无法复制和粘贴。所以我删除了

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
      ),
    );

0
投票

@Nibha Jain,谢谢你的建议很有帮助。使用

FocusScope.of(context).canRequestFocus
解决了我的问题。 🥂

© www.soinside.com 2019 - 2024. All rights reserved.