Создание строк с помощью Builder
Часть раздела Списки и экраны путешествия по Flutter на Coddy. Урок 6 из 33.
В плейлисте могут быть тысячи песен. Создавать ListTile для каждой из них невозможно, а создавать их все сразу было бы медленно. ListView.builder создаёт каждую строку только тогда, когда она появляется в области видимости при прокрутке.
ListView.builder(
itemCount: songs.length,
itemBuilder: (context, index) {
return ListTile(title: Text(songs[index]));
},
)itemCount указывает количество строк. itemBuilder — это функция, которую список вызывает для каждой строки, передавая ей index этой строки: 0 для первой строки, 1 для следующей и так далее. Она возвращает виджет для этой строки.
Используй songs.length для itemCount, чтобы список увеличивался вместе со списком песен. Если указать число больше длины списка, приложение попытается получить несуществующую песню и завершит работу с ошибкой RangeError.
Задание
ЛегкоВ плейлисте 15 песен, но отображаются только 3. Исправь itemCount, чтобы в списке были все песни вплоть до Starfall и количество оставалось правильным при добавлении песен.
Попробуйте сами
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: 3,
itemBuilder: (context, index) {
return ListTile(title: Text(songs[index]));
},
),
),
);
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Списки и экраны
1Прокручиваемые списки
Список с прокруткойЭлементы спискаНачало и конецНажатие на элемент спискаРазделители между строками6Вкладки, боковые панели и свайпы
Вкладки с панелью навигацииЗаливные значки для открытой вкладкиБоковая панельУдаление свайпомОтмена свайпаПотренируйтесь самостоятельно: Онлайн-компилятор Flutter