ListView.separated в Flutter
Между пунктами списка часто нужна линия
или отступ. Вручную вставлять Divider
между каждыми двумя ListTile
неудобно. Конструктор ListView.separated
у ListView
принимает два построителя: строку и
разделитель.
Число строк задаёт itemCount.
Элемент по индексу строит itemBuilder,
виджет между соседними строками -
separatorBuilder. Индекс в нём - это
строка выше разделителя. Разделитель вызывают
на один раз меньше, чем строк, но про
это заботится сам ListView:
import 'package:flutter/material.dart';
void main() {
runApp(const MaterialApp(home: HomePage()));
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
static const names = ['Anna', 'Boris', 'Vera', 'Gleb'];
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.separated(
itemCount: names.length,
itemBuilder: (context, index) {
return ListTile(title: Text(names[index]));
},
separatorBuilder: (context, index) {
return const Divider(height: 1);
},
),
);
}
}
Постройте список так:
const months = [
'January',
'February',
'March',
'April',
'May',
];
ListView.separated(
itemCount: months.length,
itemBuilder: (context, index) {
return ListTile(title: Text(months[index]));
},
separatorBuilder: (context, index) {
return const Divider(height: 1);
},
)