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