아이 컴퓨터

....

컴퓨터

Flutter

Flutter ListView (리스트뷰)

icomputer 2024. 6. 8. 02:15

 

`ListView`는 Flutter에서 스크롤 가능한 목록을 만드는 데 사용되는 매우 유용한 위젯입니다. 수직 또는 수평으로 아이템들을 나열할 수 있으며, 많은 양의 데이터를 효율적으로 표시하는 데 적합합니다. `ListView`는 여러 생성자를 통해 다양한 방식으로 사용될 수 있습니다.

주요 생성자

1. ListView()
   - 기본 생성자입니다. 직접 아이템을 추가하여 리스트를 만듭니다.
   
2. ListView.builder()
   - 항목이 동적으로 생성되도록 설정할 수 있는 생성자입니다. 많은 데이터 항목을 효율적으로 렌더링할 때 사용합니다.

3. ListView.separated()
   - 항목 사이에 분리자를 추가할 수 있는 생성자입니다.

4. ListView.custom()
   - 커스텀 방식으로 `ListView`를 생성할 때 사용합니다.

주요 속성

- children: `ListView`에 추가할 위젯 목록을 설정합니다.
- itemCount: `ListView.builder`에서 표시할 항목 수를 설정합니다.
- itemBuilder: `ListView.builder`에서 각 항목을 렌더링하는 방법을 설정합니다.
- separatorBuilder: `ListView.separated`에서 각 항목 사이에 추가할 위젯을 설정합니다.
- scrollDirection: 스크롤 방향을 설정합니다. 기본값은 수직 스크롤(`Axis.vertical`)입니다.
- shrinkWrap: `ListView`가 자신의 크기만큼만 차지하도록 설정합니다.
- physics: 스크롤 동작을 설정합니다. 예를 들어, `NeverScrollableScrollPhysics`를 사용하면 스크롤이 비활성화됩니다.

예제 코드

기본 ListView
기본 생성자를 사용하여 `ListView`를 만드는 간단한 예제입니다.

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter ListView Example'),
        ),
        body: ListView(
          children: <Widget>[
            ListTile(
              leading: Icon(Icons.map),
              title: Text('Map'),
            ),
            ListTile(
              leading: Icon(Icons.photo_album),
              title: Text('Album'),
            ),
            ListTile(
              leading: Icon(Icons.phone),
              title: Text('Phone'),
            ),
          ],
        ),
      ),
    );
  }
}



ListView.builder
`ListView.builder`를 사용하여 동적으로 항목을 생성하는 예제입니다.

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter ListView.builder Example'),
        ),
        body: ListView.builder(
          itemCount: 100,
          itemBuilder: (context, index) {
            return ListTile(
              leading: Icon(Icons.star),
              title: Text('Item $index'),
            );
          },
        ),
      ),
    );
  }
}



ListView.separated
`ListView.separated`를 사용하여 항목 사이에 분리자를 추가하는 예제입니다.

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter ListView.separated Example'),
        ),
        body: ListView.separated(
          itemCount: 50,
          itemBuilder: (context, index) {
            return ListTile(
              leading: Icon(Icons.star),
              title: Text('Item $index'),
            );
          },
          separatorBuilder: (context, index) {
            return Divider();
          },
        ),
      ),
    );
  }
}



코드 설명

- 기본 ListView:
  - `ListView`의 `children` 속성에 `ListTile` 위젯 목록을 지정하여 간단한 리스트를 만듭니다.
  - `ListTile` 위젯을 사용하여 아이콘과 텍스트를 포함한 항목을 만듭니다.

- ListView.builder:
  - `itemCount`를 100으로 설정하여 100개의 항목을 생성합니다.
  - `itemBuilder`를 사용하여 각 항목을 동적으로 생성합니다. 여기서 `index`는 항목의 인덱스를 나타냅니다.
  - `ListTile` 위젯을 사용하여 아이콘과 텍스트를 포함한 항목을 만듭니다.

- ListView.separated:
  - `itemCount`를 50으로 설정하여 50개의 항목을 생성합니다.
  - `itemBuilder`를 사용하여 각 항목을 동적으로 생성합니다.
  - `separatorBuilder`를 사용하여 각 항목 사이에 `Divider` 위젯을 추가합니다.

이 예제들은 `ListView`의 다양한 생성자를 사용하여 리스트를 만드는 방법을 보여줍니다. `ListView`는 스크롤 가능한 목록을 쉽게 구현할 수 있는 강력한 위젯입니다.

'Flutter' 카테고리의 다른 글

Flutter GridView (그리드뷰)  (0) 2024.06.08
Flutter AppBar  (0) 2024.06.08
Flutter Scaffold  (1) 2024.06.08
Flutter Column & Row  (0) 2024.06.08