J'ai un listView et il est créé en utilisant Future Builder
toutes les données sont récupérées sur le serveur et après avoir ajouté un nouvel enregistrement, un enregistrement est ajouté avec succès dans la base de données et Naviguer. pop
sur la page listView mais ma liste n'est pas actualisée, comment puis-je actualiser ma liste?
IconButton ( icon: Icon(Icons.add_location), onPressed: navigateToAddAddress ) void navigateToAddAddress() async { await Navigator.push(context, MaterialPageRoute(builder: (context) { return AddAddress(); })); }
Widget _buildLoadingPage() => Material( child: Center( child: CircularProgressIndicator(), ), );
Widget _buildErrorPage(error) => Material( child: Center( child: Text("ERROR: $error"), ), );
FutureBuilder<List<NewAddressModel>>( future: myAddressList, builder: (context, snapshot) { print(snapshot); if (snapshot.hasData) return addressList(snapshot.data); else if (snapshot.hasError) return _buildErrorPage(snapshot.error); else return _buildLoadingPage(); }, ),
3 Réponses :
C'est parce que lorsque vous naviguez d'une page à une autre, vous devez ajouter la méthode whencomplete comme @Abjox l'a dit, de sorte que lorsque vous revenez à la page Listview, la méthode de construction est appelée et le futurbuilder récupère les données et afficher dans vos données dans la liste que vous avez insérée dans la base de données.
pouvez-vous me dire la même chose pour supprimer si je supprime un enregistrement, cet enregistrement est supprimé mais la liste n'est pas actualisée?
Je l'ai résolu en utilisant @override void didChangeDependencies () {super.didChangeDependencies (); _myList = hitApiGetData (); } C'est la bonne route ?
Vous devriez consulter son message juste pour la référence: stackoverflow.com/questions / 54641746 /… . Si cela fonctionne, c'est super.
Une aide supplémentaire s'il vous plaît dans cette requête stackoverflow.com/questions/59942915/...
Utilisez Navigator.push (). whenComplete (() {setState () {}}) comme ceci comme @Abjox l'a suggéré.
void navigateToAddAddress() async { Navigator.of(context).push (new MaterialPageRoute(builder: (context) => AddAddress())) .whenComplete((){setState(() { // use here that method by which you load data into listView });}); }
Il vous suffit de réaffecter l'appel de la fonction Future
à myAddressList
puis d'appeler setState
.
Future<void> navigateToAddAddress() async { await Navigator.push( context, MaterialPageRoute( builder: (context) => AddAddress(), ), ); setState((){ myAddressList = _fetchAddressListFromServer(); }); }
hey pouvez-vous m'aider dans cette requête stackoverflow.com/q/59942915/12094392
@Toyed J'ai ajouté une réponse à votre un autre message . Tu peux essayer
Essayez-vous d'utiliser Navigator.push (). WhenComplete (() {setState () {}})?
@Abjox pouvez-vous me dire la même chose pour supprimer si je supprime un enregistrement, cet enregistrement est supprimé mais la liste n'est pas actualisée.
Je l'ai résolu en utilisant @override void didChangeDependencies () {super.didChangeDependencies (); _myList = hitApiGetData (); } C'est la bonne route ?