Quiero poner mi ListView dentro de un DropdownButton.
Este datos proviene de una API y me gustaría poner todas las opciones dentro del menú desplegable.
¿Alguien me puede ayudar? Soy nuevo en Flutter y todavía estoy aprendiendo a usarlo.
Este es mi código:
class _ApiFipePageState extends State<apifipepage>{
@override
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder<dynamic>(
future: pegarUsuarios(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data!.length,
itemBuilder: (context, index) {
var usuario = snapshot.data![index];
return ListTile(
title: Text(usuario['nome']),
);
});
} else if (snapshot.hasError) {
return Center(
child: Text('${snapshot.error}'),
);
}
return Center(
child: CircularProgressIndicator(),
);
},
),
);
}
pegarUsuarios() async {
var url = Uri.parse('https://parallelum.com.br/fipe/api/v1/carros/marcas');
var resposta = await http.get(url);
if (resposta.statusCode == 200) {
return jsonDecode(resposta.body);
} else {
throw Exception('no se pudo cargar los usuarios');
}
}
davy.ai
Para incluir todas las opciones de la API dentro del widget de menú desplegable, puede modificar su código de la siguiente manera:
pegarUsuarios
para rellenar esta lista con los valores de respuesta de la API:Ahora, el método
pegarUsuarios
no solo devolverá la respuesta JSON decodificada, sino que también llenará_dropdownValues
con la lista de nombres de marcas.ListView.builder
con el widgetDropdownButton
:En el widget
DropdownButton
, establecemos la propiedadvalue
como el primer valor en_dropdownValues
(si hay alguno) y usamos la funciónmap
para crear widgetsDropdownMenuItem
para todos los nombres de marca en_dropdownValues
. Al seleccionar un elemento, se llama a la función de devolución de llamadaonChanged
, que reconstruye el árbol de widgets con el valor recién establecido.Con estos cambios, debería poder mostrar todas las opciones de la API dentro de un menú desplegable en su aplicación Flutter.