dart 聚焦/单击字段时TextField的浮动提示

nvbavucw  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(80)

我正在处理一个注册页面,有一个小的布局问题困扰着我:
这里我有一些文本字段在行内旁边的图标。提示文本是对齐的图标,这就是我想要的,但一旦聚焦,写入的文本是不是对齐了。是否有可能使它的提示去更高,导致对齐写入的文本?

提前感谢您的回答
EDIT:下面是一行的代码:

Row(
                children: [
                  const HeroIcon(
                    HeroIcons.atSymbol,
                    color: Colors.black45,
                  ),
                  const SizedBox(width: 10),
                  Expanded(
                    child: Focus(
                      onFocusChange: (hasFocus) {
                        setState(() => _emailFieldColor =
                            hasFocus ? loginAccentColor : Colors.black45);
                      },
                      child: TextField(
                        controller: _email,
                        keyboardType: TextInputType.emailAddress,
                        decoration: InputDecoration(
                          labelText: "Email",
                          labelStyle: TextStyle(
                            color: _emailFieldColor,
                          ),
                          focusedBorder: const UnderlineInputBorder(
                            borderSide: BorderSide(
                              color: loginAccentColor,
                            ),
                          ),
                        ),
                      ),
                    ),
                  ),
                ],
              ),
pkwftd7m

pkwftd7m1#

InputDecoration没有将图标放在行小部件中,而是有一个名为prefixIcon的字段,该字段接收一个小部件,该小部件的功能应该与您提到的相同。

Expanded(
  child: Focus(
    onFocusChange: (hasFocus) {
      setState(() => _emailFieldColor =
          hasFocus ? loginAccentColor : Colors.black45);
    },
    child: TextField(
      controller: _email,
      keyboardType: TextInputType.emailAddress,
      decoration: InputDecoration(
        labelText: "Email",
        labelStyle: TextStyle(
          color: _emailFieldColor,
        ),
        focusedBorder: const UnderlineInputBorder(
          borderSide: BorderSide(
            color: loginAccentColor,
          ),
        ),
        prefixIcon: const HeroIcon(
          HeroIcons.atSymbol,
          color: Colors.black45,
        ),
      ),
    ),
  ),
),

相关问题