Using Form With PageView Overwrites Previous Form Data With Each Page Flutter
861
You can use TextEdittingController
for each field.
![Doing Things Occasionally](https://i.stack.imgur.com/5PEJF.jpg?s=256&g=1)
Author by
Doing Things Occasionally
Doing Things Occasionally. Like coding shit.
Updated on December 18, 2022Comments
-
Doing Things Occasionally over 1 year
I am using a pageview to display a form and get data. But, with every page, the previous data is is overwritten. I'm not sure why. Here is what I'm doing:
I want to get these pieces of information from each page:
final Map<String, dynamic> ratingCapsule = { "prodId": null, "starRating": null, "_foodRating": null, "_drinkRating": null, "recommend": null };
Page View:
Expanded( flex: 2, child: Form( key: _userRatingKey, child: IndexedStack( index: index, children: <Widget>[ PageView.builder( itemBuilder: (context, i) { return _prodctReview2(context, i); }, itemCount: currentReview.order.orderDetails.length, controller: _pageController, ) ], ), )),
Validator:
void _submit(srating, effectRating, usageRating, userRecommend) { final FormState form = _userRatingKey.currentState; if (form.validate()) { ratingCapsule['starRating'] = srating; ratingCapsule['_foodRating'] = effectRating; ratingCapsule['_drinkRating'] = _drinkRating; ratingCapsule['recommend'] = userRecommend; form.save(); print(ratingCapsule['prodId']); print(ratingCapsule['starRating']); print(ratingCapsule['_foodrating']); print(ratingCapsule['_drinkRating']); print(ratingCapsule['recommend']); print(ratingCapsule.values); ratingsList.add(ratingCapsule); print(ratingsList); setState(() { vaildForm = true; print(ratingCapsule); }); _clearInput(); ratingCapsule.clear(); nextPage(); } else { print('Invalid Form'); print(ratingCapsule.values); print(ratingCapsule); } }
On the first page I get:
[{prodId: 51, starRating: 4.0, _foodRating: 5, _drinkRating: 1, recommend: 1}]
But on the second page I get:
[{prodId: 55, starRating: 5.0, _foodRating: 5, _drinkRating: 1, recommend: 1}, {prodId: 55, starRating: 5.0, _foodRating: 5, _drinkRating: 1, recommend: 1}]
Overwriting the previous data with the new information. How do I stop this?