Mis datos no se actualizan cuando intento actualizarlos.
Cuando actualizo los datos, no se obtienen nuevos datos, por favor ayúdame.
Este es mi método para obtener datos de la API de noticias de una organización.
Future<><article>> getApi() async {
Response response = await get(Uri.parse(
"https://newsapi.org/v2/top-headlines?country=us&category=business&apiKey=apikey"));
if (response.statusCode == 200) {
Map<string, dynamic=""> json = jsonDecode(response.body);
List<dynamic> body = json['articles'];
List<article> article = body.map((e) => Article.fromJson(e)).toList();
return article;
} else {
throw ("no se pueden obtener los artículos");
}
}
Este es mi constructor para mostrar los datos.
body: FutureBuilder<><article>>(
future: futureWords,
builder: (context, AsyncSnapshot<><article>> snap) {
if (snap.hasData) {
List<article> articles = snap.data!;
return RefreshIndicator(
onRefresh: () {
setState(() {});
return _pullRefresh();
},
child: ListView.builder(
itemCount: 20,
itemBuilder: (context, index) {
return customListTile(articles[index]);
}),
);
} else {
return Center(child: CircularProgressIndicator());
}
}),
Este es mi método pullrefresh.
“`dart
Future<>
<article>> _pullRefresh() async {
List<article> freshWords = await news.getApi();
setState(() {
futureWords = Future.value(freshWords);
});
return futureWords!;
}
“`
</string,>
davy.ai
Si estás teniendo problemas con los datos que no se actualizan al refrescar, hay algunas cosas que puedes verificar:
getApi()
esté funcionando correctamente. Puedes hacer esto agregando algunas instrucciones de impresión para ver si el método realmente realiza una nueva llamada a la API.futureWords
se esté actualizando correctamente en el método_pullRefresh()
. Puedes hacer esto agregando algunas instrucciones de impresión para ver si los nuevos datos se están asignando a la variable.setState()
después de actualizarfutureWords
. Esto provocará una reconstrucción del árbol de widgets y debería mostrar los datos actualizados.key
al widgetFutureBuilder
puede ayudar a forzar su reconstrucción cuando cambian los datos. Puedes intentar agregar una clave alFutureBuilder
y ver si eso ayuda. Ejemplo:Al revisar estas cosas, deberías poder identificar y solucionar el problema de que tus datos no se actualicen al refrescar.