【发布时间】:2019-07-04 12:12:27
【问题描述】:
我正在 Flutter 上写一个表单,但是在我写的时候,textFields 看不到,因为键盘覆盖了它。因此,我想减小图像的大小并在必要时移动以显示文本字段。
它是这样开始的:
当我在密码字段上写字时,它是这样的:
所以,我希望在编写页面移动时看到活动焦点文本字段。每个 TextField 都有一个 TextController 和一个 FocusNode 但我不知道如何解决。
文本字段的一个示例:
final emailField = TextFormField(
controller: emailController,
focusNode: emailFocusNode,
keyboardType: TextInputType.emailAddress,
onFieldSubmitted: (String value) {
FocusScope.of(context).requestFocus(passwordFocusNode);
},
validator: (val) =>
(!EmailValidator.validate(val)) ? 'Incorrect Email' : null,
onSaved: (val) => _username = val,
textInputAction: TextInputAction.next,
style: style,
decoration: InputDecoration(
contentPadding: EdgeInsets.fromLTRB(20.0, 15.0, 20.0, 15.0),
hintText: "Email",
fillColor: Colors.white,
filled: true,
border:
OutlineInputBorder(borderRadius: BorderRadius.circular(32.0))),
);
总之,我需要根据选择的 TextField 来显示它并且它没有被键盘覆盖来移动屏幕。
【问题讨论】:
-
你可以把它包装成一个ScrollerView。当您将 textfields 聚焦时,图像将 sccoll 到顶部
-
@user8773560 你能公开一个例子吗?
-
您是否在此屏幕上使用
Scaffold?此外,使用ListView而不是Column作为您的TextFileds 和图像,那么您应该没问题。在这里可以帮助您的是 Scaffold 中的属性,即resizeToAvoidBottomInset,默认为true。 api.flutter.dev/flutter/material/Scaffold/… -
@JuanGomez 提供整个屏幕的代码,如果您仍然无法弄清楚,我们可以帮助您。