我是新手,我遇到了一个问题,非常感谢您的帮助。
我在两个不同的屏幕上有两个单独的表格。单击第一页上的“下一步”按钮验证表单并使用Navigator.push()
. 一切正常,直到我使用自动创建的应用栏左上角的箭头返回第一页。第一页上 TextFormFields 内的数据仍然填写,这很好,但是当我单击下一步(使用 验证并推送到第二页Navigator.push
)并转到第二页时,TextFormFields 内的所有数据都消失了。
我的目的是让用户数据在TextFormFields
两个表单中输入后,在不同的屏幕中来回导航。
我已经查看了这个stackoverflow 页面,但是那里的解决方案并没有解决我的问题。我查看了 shared_preferences 但 Flutter discord 上的人建议不要使用它。
这是代码:
(我使用 PasteUbuntu 的代码,因为它有点太长,所以我不想在这篇文章中复制它)
这是我的formField()
功能的定义:
class formField extends StatelessWidget {
Function validator;
Function onSaved;
String fieldTitle;
String hintText;
TextEditingController textController;
TextInputType keyboardStyle;
formField(
{this.onSaved,
this.validator,
this.fieldTitle,
this.hintText,
this.textController,
this.keyboardStyle});
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
RichText(
textAlign: TextAlign.left,
text: TextSpan(
text: fieldTitle,
style: GoogleFonts.questrial(
fontSize: 16,
color: Colors.black,
fontWeight: FontWeight.w500,
)),
),
SizedBox(height: 10),
Container(
width: 335,
height: 50,
child: Material(
elevation: 5.0,
borderRadius: BorderRadius.circular(10.0),
child: TextFormField(
validator: validator,
onSaved: onSaved,
textAlignVertical: TextAlignVertical.bottom,
textCapitalization: TextCapitalization.sentences,
keyboardType: keyboardStyle,
controller: textController,
decoration: InputDecoration(
filled: true,
fillColor: Color(0xFFF0F0F0),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(color: Color(0xFFE8E8E8))),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFE8E8E8)),
borderRadius: BorderRadius.circular(8.0),
),
hintText: hintText,
hintStyle:
GoogleFonts.inter(color: Color(0xFFBDBDBD), fontSize: 16),
),
style: GoogleFonts.inter(color: Colors.black, fontSize: 16),
),
),
),
],
);
}
}