我制作了TextFormField
小部件,以便在任何需要的地方使用它。
Widget TextFormFieldWidget(
TextEditingController controller,
Icon icon,
String hintText,
bool obscureText,
BuildContext context,
) {
return Theme(
data: Theme.of(context).copyWith(
colorScheme: ThemeData().colorScheme.copyWith(
primary: Colors.red,
),
),
child: TextFormField(
obscureText: obscureText,
controller: controller,
decoration: InputDecoration(
hintText: hintText,
prefixIcon: icon,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(50),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(50),
borderSide: const BorderSide(
color: Color(0xFFCB3126),
),
),
),
),
);
}
我有个问题。问题是这样的:我正在创建一个注册页面。当用户退出页面并返回时, 在TextFormField
中输入的不会被重置,例如,我给予一个例子,用户在输入电子邮件地址后放弃,当你离开页面并返回时,电子邮件地址不会被删除。
我怎样才能解决这个问题呢?谢谢你的帮助。
4条答案
按热度按时间xmq68pz91#
请在退出页面时清除文本控制器值。
hgc7kmma2#
1.处置控制器
1.清除控制器。
gojuced73#
如果您使用一个(共享的)TextController,并且一个TextController被传递到每个TextFormFieldWidget,则单个控制器将具有单个状态。
因此,当附加到新的TextFormFieldWidget时,它将保持其值。
请对不同的字段使用不同的TextEditingController。
9njqaruj4#
创建函数返回
Widget
的问题是这样的。如果你正在为你的应用制作一个自定义小部件,比如说可重用的自定义文本字段,建议制作成一个单独的StatefulWidget
。当您使用有状态小部件时,您可以根据需要为同一个小部件创建一个新示例。
使用下面提到的代码为您创建相同的。