Cómo agregar elementos de lista json a los elementos de búsqueda desplegable en Flutter | Dart
Estoy creando un botón desplegable con búsqueda. Así que estoy usando este paquete. Aquí con este paquete tengo un problema. La respuesta desde la API es la siguiente.
List countries = [
{
'id': '1',
'name': 'Brasil',
},
{
'id': '2',
'name': 'India',
},
{
'id': '3',
'name': 'Japón',
},
{
'id': '4',
'name': 'Tokio',
},
{
'id': '5',
'name': 'Australia',
},
{
'id': '6',
'name': 'Sri Lanka',
},
{
'id': '7',
'name': 'Canadá',
},
];
Mi código de desplegable es este,
body: Column(
children: [
DropdownSearch<string>(
mode: Mode.MENU,
items: countries['name'],
showSearchBox: true,
label: "Modo menú",
hint: "País en modo menú",
onChanged: (value){
print(countries['name']);
},
selectedItem: "Canadá",
),
],
),
Aquí items: countries['name']
línea está dando un error que dice: El tipo de argumento ‘String’ no puede asignarse al parámetro de tipo ‘int’.“` Además, cuando selecciono un país, quiero imprimir el ID del país. Por ejemplo, si selecciono el país como Japón, debería imprimir 4 en la consola. Mi código no está funcionando.
davy.ai
Solución para el botón de selección con búsqueda utilizando el paquete Dropdown_Search
Para resolver este problema, sigue los siguientes pasos:
countries
es una lista de mapas. Para obtener solo los nombres de los países, necesitamos usar la funciónmap
para extraer los valores de nombre de cada mapa en la lista. Reemplaza la propiedaditems
del widgetDropdownSearch
con el siguiente código:onChanged
del widgetDropdownSearch
. Podemos usar la funciónfirstWhere
para encontrar el mapa con el nombre de país seleccionado y luego obtener el valor del ID de ese mapa. Reemplaza la propiedadonChanged
con el siguiente código:Código final
El código final para crear un botón de selección con búsqueda utilizando el paquete
Dropdown_Search
se vería así:¡Eso es todo! Ahora deberías poder crear un botón de selección con búsqueda e imprimir el ID del país seleccionado.