Rows With Separators
Part of the Lists and Screens section of Coddy's Flutter journey. Lesson 8 of 33.
A long list reads better with a line between the rows. With a builder you cannot write the Dividers by hand, so there is a second kind of builder list that adds them for you:
ListView.separated(
itemCount: songs.length,
itemBuilder: (context, index) {
return ListTile(title: Text(songs[index]));
},
separatorBuilder: (context, index) {
return const Divider();
},
)separatorBuilder is called for every gap between two rows and returns the widget that goes there. A list of 15 rows gets 14 separators, and there is never one after the last row.
The separator can be any widget: a Divider, or a SizedBox for plain space.
Challenge
EasyChange the playlist to a ListView.separated with a Divider between every two songs.
Try it yourself
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
final List<String> songs = [
'Morning Light',
'Paper Planes',
'City Rain',
'Slow River',
'Neon Nights',
'Golden Hour',
'Northern Wind',
'Blue Harbor',
'Quiet Storm',
'Summer Static',
'Echo Valley',
'Last Train',
'Silver Lines',
'Open Road',
'Starfall',
];
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(title: const Text('Playlist')),
body: ListView.builder(
itemCount: songs.length,
itemBuilder: (context, index) {
return ListTile(title: Text(songs[index]));
},
),
),
);
}
}
This lesson includes a short quiz. Start the lesson to answer it and track your progress.
All lessons in Lists and Screens
1Scrolling Lists
A List That ScrollsList TilesLeading and TrailingTap a List TileDividers Between Rows6Tabs, Drawers and Swipes
Tabs With a Navigation BarFilled Icons for the Open TabA Side DrawerSwipe to DeleteUndo a SwipePractice on your own: Online Flutter compiler