Метод separated
Метод separated виджета ListView конструктор ListView.separated создаёт ListView, где между строками всегда есть виджет из separatorBuilder. Пункты собирает itemBuilder, их число задают в itemCount.
Синтаксис
ListView.separated(
itemCount: 5,
itemBuilder: (context, index) => Text('abcde'),
separatorBuilder: (context, index) => Divider(),
)
Параметры
| Параметр | Описание |
|---|---|
itemBuilder |
Функция, которая строит пункт по индексу. Обязательный параметр. |
separatorBuilder |
Функция, которая строит разделитель между пунктами. Обязательный параметр. |
itemCount |
Сколько всего пунктов. Если не задан, список бесконечный. |
controller |
ScrollController для программной прокрутки.
|
Пример
Давайте выведем список с линией между строками:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: ListView.separated(
itemCount: 8,
itemBuilder: (BuildContext context, int index)
{
return ListTile(title: Text('abcde'));
},
separatorBuilder: (BuildContext context, int index)
{
return const Divider(height: 1);
},
),
),
),
);
}
На экране между одинаковыми подписями будут тонкие разделители.
Пример
Давайте сделаем разделитель с отступом:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: ListView.separated(
itemCount: 4,
itemBuilder: (BuildContext context, int index)
{
return ListTile(title: Text('12345'));
},
separatorBuilder: (BuildContext context, int index)
{
return const SizedBox(height: 12);
},
),
),
),
);
}
На экране пункты разойдутся по вертикали за счёт пустого зазора.