简体   繁体   中英

Using Form With PageView Overwrites Previous Form Data With Each Page Flutter

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?

您可以为每个字段使用TextEdittingController

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM