无法从 TextField 颤振中退出

Posted

技术标签:

【中文标题】无法从 TextField 颤振中退出【英文标题】:Can't exit from a TextField flutter 【发布时间】:2020-09-03 12:23:06 【问题描述】:

我需要一个 Box 来插入和存储用户输入的一些信息,我使用的是“TextField”,所以我将“TextField”中的“maxLines”选项从默认值 (1) 更改为 (2 ),当我想在此处插入一些文本时,我无法离开该框,因为“完成”按钮更改为“返回”阻止了我!键盘也被挡住了。 我这样做是因为我想要一个里面有一些文本(如描述)的 Box,我可以将它移动到我想要的位置并更改它的所有属性。 我的问题是文本字段全部写在一行中,我需要在文本字段的边界处换行。 你知道如何更好地处理 TextField 吗? 这是代码的一部分:

Widget build(BuildContext context) 
return new Scaffold(
    backgroundColor: Colors.white,
    body : Container(
      decoration: BoxDecoration(
          shape: BoxShape.rectangle,
          image: DecorationImage(
            image: _image == null
                ? AssetImage('assets/images/io.png')
                : FileImage(_image),  // here add your image file path,
          alignment: Alignment.topCenter,
          ),
         ),
      child: GestureDetector(
        child:Container(
          alignment: Alignment.center,
          child : ConstrainedBox(
             constraints: BoxConstraints(
               maxHeight: 400,
               maxWidth: 400,
                ),
              child: TextField(
                minLines: 1,
                 maxLines: 2,
                decoration: InputDecoration(
                  border: OutlineInputBorder(
                    borderRadius: BorderRadius.all(
                       const Radius.circular(48.0)
                    ),
                  ),
                labelText: 'Descrizione',
                labelStyle: TextStyle(
                   backgroundColor: Colors.white,
                  ),
                ),
              ),
          ),
        ),
      )
    )
);

P.S.:我正在研究这个“GestureDetector”,我想它应该对这个目的有用。

【问题讨论】:

【参考方案1】:

TextField 中进入InputDecoration 并在后缀属性中添加一个Widget。 suffix 属性是一个 Widget,显示在 Textfield 的末尾。

FocusNode node = FocusNode();


TextField(
                minLines: 1,
                maxLines: 2,
                focusNode: node,
                decoration: InputDecoration(
                  suffix: RaisedButton(
                    onPressed: () 
                      node.unfocus();
                    ,
                    child: Text("Done"),
                  ),
                  border: OutlineInputBorder(
                    borderRadius:
                        BorderRadius.all(const Radius.circular(48.0)),
                  ),
                  labelText: 'Descrizione',
                  labelStyle: TextStyle(
                    backgroundColor: Colors.white,
                  ),
                ),
              ),

【讨论】:

以上是关于无法从 TextField 颤振中退出的主要内容,如果未能解决你的问题,请参考以下文章

材质 UI - 概述的 TextField 不呈现轮廓

无法使用颤振形式的重置方法清除文本字段

颤振 - 跨度不能有零长度

没有调用 textField 代表

颤振检测键盘隐藏动画的结束

无法向 python 本地服务器发送颤振 GET 请求