개발/Flutter
[Flutter] ListTile
laladev
2024. 7. 23. 15:05
ListTile
고정 높이를 가지고 text, leading icon, trailing icon 등을 가지는 row
리스트의 아이템으로 많이 쓰인다.
예를 들면 이런거

주요 속성은
- title: 타이틀 텍스트
- leading: 타이틀 왼쪽 끝에 위치하는 아이콘
- trailing: 타이틀 오른쪽 끝에 위치하는 아이콘
- subtitle: 타이틀 아래에 위치하는 서브타이틀 텍스트
- dense: 텍스트 및 아이콘을 조금더 작은 크기로 표시
- isThreeLine: 서브타이틀에 멀티라인 허용
Code Template
import 'package:flutter/material.dart';
/// Flutter code sample for [ListTile].
void main() => runApp(const ListTileApp());
class ListTileApp extends StatelessWidget {
const ListTileApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(useMaterial3: true),
home: const ListTileExample(),
);
}
}
class ListTileExample extends StatelessWidget {
const ListTileExample({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('ListTile Sample')),
body: ListView(
children: const <Widget>[
Card(child: ListTile(title: Text('One-line ListTile'))),
Card(
child: ListTile(
leading: FlutterLogo(),
title: Text('One-line with leading widget'),
),
),
Card(
child: ListTile(
title: Text('One-line with trailing widget'),
trailing: Icon(Icons.more_vert),
),
),
Card(
child: ListTile(
leading: FlutterLogo(),
title: Text('One-line with both widgets'),
trailing: Icon(Icons.more_vert),
),
),
Card(
child: ListTile(
title: Text('One-line dense ListTile'),
dense: true,
),
),
Card(
child: ListTile(
leading: FlutterLogo(size: 56.0),
title: Text('Two-line ListTile'),
subtitle: Text('Here is a second line'),
trailing: Icon(Icons.more_vert),
),
),
Card(
child: ListTile(
leading: FlutterLogo(size: 72.0),
title: Text('Three-line ListTile'),
subtitle:
Text('A sufficiently long subtitle warrants three lines.'),
trailing: Icon(Icons.more_vert),
isThreeLine: true,
),
),
],
),
);
}
}
출력
