Flutter 目前是否有办法将多行文本字段的提示居中?

Flutter 目前是否有办法将多行文本字段的提示居中?,flutter,flutter-layout,Flutter,Flutter Layout,我有一个文本字段,可以保存多行输入,几乎模拟一个文本区域,因为颤振没有这些 我遇到的问题是提示文本没有垂直居中,即使前缀是 容器( 填充:仅限边集(右侧:显示宽度(上下文)*0.05), 对齐:alignment.centerLeft, 高度:显示高度(上下文)*0.28, 宽度:显示宽度(上下文)*0.75, 装饰:圆形阴影装饰(背景:背景,颜色:secondaryRed(),大小:0.015), 孩子:TextField( maxLines:7, 光标颜色:颜色。白色, 样式:GoogleF

我有一个文本字段,可以保存多行输入,几乎模拟一个文本区域,因为颤振没有这些

我遇到的问题是提示文本没有垂直居中,即使前缀是

容器(
填充:仅限边集(右侧:显示宽度(上下文)*0.05),
对齐:alignment.centerLeft,
高度:显示高度(上下文)*0.28,
宽度:显示宽度(上下文)*0.75,
装饰:圆形阴影装饰(背景:背景,颜色:secondaryRed(),大小:0.015),
孩子:TextField(
maxLines:7,
光标颜色:颜色。白色,
样式:GoogleFonts.notoSans(
颜色:Colors.white,fontSize:displayWidth(上下文)*0.04),
装饰:输入装饰(
边框:InputBorder.none,
前缀:图标(
Icons.font_下载,
颜色:颜色,白色,
大小:显示宽度(上下文)*0.065,
),
hintText:“文本字段提示”,
hintStyle:GoogleFonts.notoSans(
颜色:Colors.white54,fontSize:displayWidth(上下文)*0.035),
),
),
),


当前是否有办法在多行文本字段中垂直居中提示文本?

您可以使
hintText
类似多行

hintText: "\n\n\nA TextField Hint\n\n\n",

如果要在多行文本字段中间放置提示文本,唯一的方法是在其中添加填充。

TextField(
  textAlign: TextAlign.left,
  decoration: InputDecoration(
    hintText: "Enter Something", 
    contentPadding: EdgeInsets.all(150.0), // You can use EdgeInsets.only() to add padding from top and/or bottom. But it will affect your TextField
    ),
  ),
注意以这种方式应用填充将导致多行文本字段无效。为什么?因为输入文本将从文本字段的中间开始。因此,文本输入的区域也将缩小。而且还为用户创造了糟糕的用户体验(UX)(至少我是这么认为的)


我真的不建议将提示文本居中。

除了添加内容填充以按照@hisam的建议手动放置提示文本外,您还可以在键入时使文本字段展开,如下所示:

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.grey,
      padding: const EdgeInsets.all(8.0),
      width: 200,
      child: Row(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Icon(Icons.font_download),
          const SizedBox(width: 8.0),
          Expanded(
            child: TextField(
              minLines: 1,
              maxLines: 7,
              cursorColor: Colors.white,
              decoration: InputDecoration(
                contentPadding: const EdgeInsets.all(0),
                isDense: true,
                border: InputBorder.none,
                hintText: "A TextField Hint",
              ),
            ),
          ),
        ],
      ),
    );
  }
}

您可以使用
TextField
@SCcode@TimilehinJegede我试过设置“textAlignVertical:textAlignVertical.center”,但不起作用。没有区别。Hello@SCcode您可以使用textAlign:textAlign.center属性这似乎不是一个合适的解决方案,因为
光标仍然从顶部开始,而不是手动放置
hintText
的位置。同意。可能不是最佳或完整的解决方案。显然不是一个理想的方式。一个粗糙的。通过
TextField
本身的一些属性,应该有一种内在的方法来实现这一点。但如果现在没有,这至少集中了
hintText
,这也是问题的目的;虽然这并没有明确回答这个问题,但我将把它标记为答案,因为这似乎是最好的方法。谢谢你的帮助。