Menu
CoddyTech

Создание строк с помощью 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.

challenge icon

Задание

Легко

В плейлисте 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]));
          },
        ),
      ),
    );
  }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Списки и экраны

Потренируйтесь самостоятельно: Онлайн-компилятор Flutter