O ListView em Flutter é um widget que permite exibir uma lista rolável de widgets filhos, o que é extremamente útil para exibir uma grande quantidade de dados de maneira eficiente, economizando espaço na tela. Ele pode ser usado para exibir uma lista de itens verticalmente ou horizontalmente, dependendo da configuração.


Uso básico do ListView vertical:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  final List<String> items = List.generate(100, (index) => 'Item $index');

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Exemplo ListView'),
        ),
        body: ListView.builder(
          itemCount: items.length,
          itemBuilder: (context, index) {
            return ListTile(
              title: Text(items[index]),
            );
          },
        ),
      ),
    );
  }
}


Neste exemplo:

  • ListView.builder é usado para construir a lista de itens de forma eficiente, sob demanda.

  • itemCount especifica o número total de itens na lista.

  • itemBuilder é uma função de callback que constrói cada item da lista com base no índice.

O ListView oferece outras variações, como ListView.separated, que permite inserir divisores entre os itens da lista, e ListView.custom, que fornece maior controle sobre a criação da lista.


ListView horizontal:

O ListView também pode ser configurado para exibir os itens horizontalmente usando o parâmetro scrollDirection.


Exemplo:

ListView.builder(
  scrollDirection: Axis.horizontal,
  itemCount: items.length,
  itemBuilder: (context, index) {
    return Container(
      margin: EdgeInsets.all(8.0),
      width: 120.0,
      color: Colors.blue,
      child: Center(
        child: Text(
          items[index],
          style: TextStyle(color: Colors.white),
        ),
      ),
    );
  },
)


Neste exemplo, scrollDirection: Axis.horizontal é usado para configurar o ListView para rolar horizontalmente.

O ListView é altamente flexível e pode ser personalizado de várias maneiras para atender às necessidades de exibição de uma lista de itens em um aplicativo Flutter.