es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Flutter Dropdown con botón de radio

Cómo diseñar este tipo de dropdown con botón de opción: muestra de ejemplo dropdown con botón de opción – muestra

Intenté varias veces este diseño… y si selecciono una opción, muestra solo Texto

Mi código

child: DropdownButtonHideUnderline(
child: DropdownButton<String>(
value: selectedVtypes,
items: ['Nuevo', 'De segunda mano'].map((String value) {
return DropdownMenuItem(
child: Container(
width: 150,
child: ListTile(
title: Text(value),
trailing: Radio(
value: value,
groupValue: value,
onChanged: (val) {},
),
),
),
value: value,
);
}).toList(),
onChanged: (String? vtype) {
setState(() {
selectedVtypes = vtype;
});
},
),
),

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para diseñar un Dropdown con botones de radio como se muestra en la imagen de muestra, sigue estos pasos:

    1. Envuelve el DropdownButton con el widget DropdownButtonHideUnderline para ocultar la línea subrayada por defecto.
    2. Establece la propiedad “value” de DropdownButton con el valor inicial del elemento seleccionado.

    3. La propiedad “items” de DropdownButton toma una lista de DropdownMenuItem. Por lo tanto, crea una lista de elementos y mapea a DropdownMenuItems.

    4. Para la propiedad “child” de DropdownMenuItem, crea un Container con el ancho deseado y envuelve un widget ListTile dentro de él.

    5. El widget ListTile tiene una propiedad “title” donde puedes establecer el texto de la opción y una propiedad “trailing” donde puedes agregar el widget del botón de radio.

    6. Para la propiedad “value” de DropdownMenuItem, establece el valor del elemento seleccionado.

    7. En el evento “onChanged” de DropdownButton, actualiza el valor del elemento seleccionado y llama a setState para actualizar la interfaz de usuario.

    8. Cuando el usuario selecciona una opción, solo se debe mostrar el texto de la opción seleccionada debajo del botón Dropdown. Puedes usar un widget Text y establecer su valor en la opción seleccionada.

    Entonces, el código final para crear un Dropdown con botones de radio se vería algo como esto:

    String? selectedVtype;
    
    child: Column(
      children: [
        DropdownButtonHideUnderline(
          child: DropdownButton<string>(
            value: selectedVtype,
            items: [
              'Nuevo',
              'Usado'
            ].map((vtype) {
              return DropdownMenuItem<string>(
                value: vtype,
                child: Container(
                  width: 150,
                  child: ListTile(
                    title: Text(vtype),
                    trailing: Radio<string>(
                      value: vtype,
                      groupValue: selectedVtype,
                      onChanged: (selectedValue) {
                        setState(() {
                          selectedVtype = selectedValue;
                        });
                      },
                    ),
                  ),
                ),
              );
            }).toList(),
            onChanged: (selectedValue) {
              setState(() {
                selectedVtype = selectedValue;
              });
            },
          ),
        ),
        SizedBox(height: 20),
        Text(
          'Valor seleccionado: ${selectedVtype ?? ''}',
          style: TextStyle(fontSize: 16),
        ),
      ],
    )
    

Comments are closed.