DropdownButton: no mostrar el menú emergente al presionar
Quiero mostrar mi propia página cuando se pulsa el botón desplegable, luego el elemento seleccionado en la página debe establecerse como el valor del botón desplegable.
Entonces básicamente, necesito un DropdownButton sin ninguna ventana emergente al tocar. Cuando uso onTap
todavía se mostrará la ventana emergente predeterminada, ¿cómo puedo evitar eso?
davy.ai
Para lograr esto, puedes usar una combinación de las clases
GestureDetector
ysetState
.onTap
delDropdownButton
.Agrega un widget
GestureDetector
alrededor delDropdownButton
y establece la propiedadonTap
de ese widget en su lugar.En el callback
onTap
delGestureDetector
, usa el métodosetState
para actualizar una variable booleana que llamaremosmostrarElementosDropdown
.En la propiedad
items
delDropdownButton
, verifica el valor demostrarElementosDropdown
, es decir, si estrue
, muestra los elementos como de costumbre, pero si esfalse
, muestra solo el valor seleccionado.Para la selección del elemento del dropdown, usa
setState
para actualizar el valor seleccionado del dropdown y también establecer la variablemostrarElementosDropdown
nuevamente enfalse
.Aquí tienes un fragmento de código de ejemplo para ilustrar estos pasos:
Con este código, cuando toques el widget
MyDropdown
, alternará entre mostrar solo el valor seleccionado y mostrar todos los elementos. Cuando selecciones un elemento, el valor seleccionado se actualizará y el dropdown mostrará solo el valor seleccionado.