dardo - ¿Cómo puedo construir ListView.builder de 2 líneas en Flutter?

CorePress2024-01-25  9

¿Alguien puede explicarme cómo puedo crear un widget como creador de ListView con 2 líneas de elementos? Tengo un ejemplo de este tipo, puedes verlo en la siguiente imagen:

mira aquí stackoverflow.com/questions/51089041/…

- Jitesh Mohite

28/03/2021 a las 10:48

eso no es lo que necesito

- Pación

28/03/2021 a las 11:04



------------------------------------

Una opción es utilizar el widget Ajustar con la dirección establecida en horizontal.

@override
Widget build(BuildContext context) {
  final lorem = [
    'accusamus',
    'dignissimos',
    'ducimus',
    'blanditiis',
    'praesentium',
    'voluptatum'
  ];

  return Container(
    height: 100,
    width: 250,
    child: Wrap(
      direction: Axis.horizontal,
      children: List.generate(
        lorem.length,
        (index) => Padding(
          padding: const EdgeInsets.all(8.0),
          child: Text(lorem[index]),
        ),
      ),
    ),
  );
}



------------------------------------

Este fragmento debería ayudarte. Puedes probarlo en https://dartpad.dev/028daa76945938f0e5c14aea6a8bf84b?null_safety=true

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SizedBox(
      width: 500.0,
      child: Column(
        children: [
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: ['English', 'Russian', 'Spanish']
                .map((language) => LanguageButton(
                      language: language,
                    ))
                .toList(),
          ),
          SizedBox(height: 20,),
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: ['Some really long language', 'French', 'German']
                .map((language) => LanguageButton(
                      language: language,
                    ))
                .toList(),
          ),
        ],
      ),
    );
  }
}

class LanguageButton extends StatelessWidget {
  final String language;

  const LanguageButton({Key? key, required this.language}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return OutlinedButton(
      style: OutlinedButton.styleFrom(
        shape: const RoundedRectangleBorder(
          borderRadius: BorderRadius.all(
            Radius.circular(30),
          ),
        ),
      ),
      onPressed: () {
        // TODO
      },
      child: Padding(
        padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 8.0),
        child: Text(language),
      ),
    );
  }
}

Utilicé una columna en lugar de ListView.builder. Tal vez eso sea lo suficientemente bueno.o lo que necesitas. Lo esencial es tener cada línea como una fila y establecer mainAxisAlignment en spaceBetween.

3

Esta es una buena idea, gracias, pero eso no es lo que necesito

- Pación

28/03/2021 a las 11:15

¿Qué necesitas exactamente? ¿Podrías especificar un poco más en la pregunta?

Dumazy

28/03/2021 a las 11:18

No necesito un generador de vistas de lista desplazable con botones de idiomas, el tamaño del botón debe tener un ancho adaptable según la longitud del nombre del idioma

- Pación

28/03/2021 a las 11:25

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare