滚动Flutter上的表单数据消失

时间:2018-03-06 07:59:59

标签: forms dart textfield flutter

我已经实现了一个带有几个TextFormFields的表单。当我滚动窗体时,视图外的TextFormFields会丢失输入的数据。已发布类似问题here。我不知道如何使用TextEditingController来保存状态,因为我对Dart和Flutter很新。 我甚至尝试在github repo之后使用FormFieldStatePersistor。这也行不通。有关如何解决问题的任何想法?

3 个答案:

答案 0 :(得分:0)

在视图中创建TextEditingController,其中包含Form。然后将其传递给controller的{​​{1}}属性。

示例:

TextFormField

然后

// Create a controller for username field
TextEditingController _userController = new TextEditingController();

希望有所帮助!

答案 1 :(得分:0)

我已在github here的此链接中为此提供了解决方案。是的,@ HemanthRaj使用with test_data ( request_num, pi_candidate_num, request_last_modified_dt, psi_score ) as ( select null, 4639022, null , null from dual union all select 1655626, 4639022, to_date( '5-Mar-17', 'dd-Mon-rr'), null from dual union all select 1662401, 4639022, to_date( '8-Mar-17', 'dd-Mon-rr'), 22.6 from dual union all select 1662470, 4639022, to_date( '6-Apr-17', 'dd-Mon-rr'), null from dual union all select 1662486, 4639022, to_date( '6-Apr-17', 'dd-Mon-rr'), null from dual union all select 1662499, 4639022, to_date( '8-Mar-17', 'dd-Mon-rr'), 30.3 from dual union all select 1771817, 4639022, to_date( '7-Jun-17', 'dd-Mon-rr'), 35.3 from dual union all select 1797323, 4639022, to_date('24-Jun-17', 'dd-Mon-rr'), 38.5 from dual ) select request_num, pi_candidate_num, request_last_modified_dt, psi_score from ( select t.*, rank() over (order by request_last_modified_dt desc) rn from test_data t where pi_candidate_num = 4639022 and psi_score is not null ) where rn = 1 ; REQUEST_NUM PI_CANDIDATE_NUM REQUEST_LAST_MODIFIED_DT PSI_SCORE ----------- ---------------- ------------------------ ---------- 1797323 4639022 24-Jun-17 38.5 是绝对正确的,但如果TextEditingControllers内有这么多字段,这种方法不起作用,因为ListView只加载要显示的字段,如果滚出视图,则清除这些字段。我在提供的链接中解释了一个正确的解决方案。请检查一下,解决方案完美无缺。

此致 鳅

答案 2 :(得分:0)

对于任何希望快速获得@Mahi帖子的人:使用SingleChildScrollView和Column而不是ListView:

Form(
  key: _formKey,
  child: SingleChildScrollView(
     child: Column(
     .....