web-dev-qa-db-fra.com

Est-il possible d'actualiser ou de recharger la page avec Navigator.pop ... comme 1st (nav.push => 2) page sur 2ème page et retour du 2e (Nav.pop, valeur) à la 1ère page?

Je veux passer des valeurs de 2e page à la 1ère page avec navigator.pop et rafraîchir ou recharger ma 1ère page avec de nouvelles valeurs dans initstate ou tout autre travail autour?

Je suis capable d'obtenir ces valeurs dans la 1ère page mais pas en mesure de rafraîchir ou de recharger la page avec de nouvelles valeurs dans initstate où je veux transmettre de nouvelles données dans API N obtenir une réponse ...

de l'aide?

Je redirige de répertorier la page de cette ...

getBrand(BuildContext context) async {
    tempBrand = await Navigator.Push(context,
        MaterialPageRoute(builder: (context) => BrandList(widget.subCatID)));
    selectedBrand = tempBrand.name;
    selectedBrandID = tempBrand.id;
  }

maintenant ici, je passe ces valeurs dans navigator.pop

Obtenir de la valeur ici et passer à la 1ère page.

Container(
          padding: EdgeInsets.all(10),
          child: ListView.separated(
              separatorBuilder: (context, index) =>
                  Divider(color: Color(0xffcccccc)),
              itemCount: prodBrands.length,
              itemBuilder: (BuildContext context, int index) {
                return GestureDetector(
                  child: InkWell(
                    onTap: () {
                      tempProdBrand = ProdBrandListModel.Message(
                        id: prodBrands[index].id,
                        name: prodBrands[index].name,
                      );

                      Navigator.pop(context, tempProdBrand);

                    },
                    child: Container(
                      child: Text(prodBrands[index].name),
                      padding: EdgeInsets.all(10.0),
                    ),
                  ),
                );
              }),
        )

Voulez-vous utiliser de nouvelles valeurs ici ...

submitProduct() {
    api
        .newbiz(
      selectedBrandID,
    )
        .then((response) {
      setState(() {
        productID = response.message;
      });
    });
    setState(() {});
  }

Voulez-vous simplement actualiser ma page à partir d'InitiState ou d'une autre manière lorsque je retourne à la 1ère page avec mes nouvelles valeurs passées dans la fonction POP.

6
NilxSingh

pour naviguer de page1 à la page2

habituellement, vous utilisez Navigator.Push () par exemple:

// Page1
    Navigator.Push(context, MaterialPageRoute(builder: (context) => Page2()));

et lorsque vous êtes dans la page2, vous faites des travaux, par exemple, économiser certaines données de préférence partagée et revenir à la page1 et à rafraîchir la page1 pour obtenir les nouvelles données à partir de préférences partagées, ce que vous pouvez faire est de faire passer à la page1

//Page2
    Navigator.pop(context);

cela ne va pas suffire à rafraîchir votre page1 afin que vous ayez donc besoin de joindre un .then dans la page1 Navigator en tant que rappel, il sera appelé lorsque vous allez à PAGE2 et que .Chen devrait avoir un état déterminé pour déclencher une reconstruction juste appeler une quelque chose à l'intérieur de l'état fixé pour provoquer une reconstruction comme celle-ci:

//Page1
    Navigator.Push(context, MaterialPageRoute(builder: (context) => Page2())).then((value) {
                  setState(() {
                    // refresh state of Page1
                  });
                });
16
Ridha Rezzag