세로나 가로로 나열하면서 화면을 벗어날 때 스크롤을 지원하기 위해 사용한다.
ListView(
children: [
Container(
color: Colors.red,
height: 300,
),
Container(
color: Colors.green,
height: 300,
),
Container(
color: Colors.blue,
height: 300,
),
],
),
스크롤 기능
기능은 같지만 쓰이는 용도가 다릅니다. ListView는 똑같은 형태의 위젯을 세로로 출력에 최적화된 위젯이다.
다양한 형태라면 SingleChildScrollView + Column
ListView.separated(
separatorBuilder: (context, index) {
return const Divider(
height: 4,
color: Colors.black,
);
}
)
Do it!실습 리스트 뷰 활용하기
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
void main() {
runApp(ch12_1());
}
class User {
String name;
String phone;
String email;
User(this.name, this.phone, this.email);
}
class ch12_1 extends StatelessWidget {
ch12_1({super.key});
List<User> users = [
User('Ralo', '010-0000-0000', 'ralo.com'),
User('Ralo', '010-0000-0000', 'ralo.com'),
User('Ralo', '010-0000-0000', 'ralo.com'),
User('Ralo', '010-0000-0000', 'ralo.com'),
User('Ralo', '010-0000-0000', 'ralo.com'),
User('Ralo', '010-0000-0000', 'ralo.com'),
User('Ralo', '010-0000-0000', 'ralo.com'),
User('Ralo', '010-0000-0000', 'ralo.com'),
];
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('practice'),
),
body: ListView.separated(
itemCount: users.length,
itemBuilder: (context, index) {
return ListTile(
leading: const CircleAvatar(
radius: 25,
backgroundImage: AssetImage('images/Ralo.png'),
),
title: Text(users[index].name),
subtitle: Text(users[index].phone),
trailing: const Icon(Icons.more_vert),
onTap: () {
launchUrl(
Uri.parse('https://www.youtube.com/@RALO24'),
);
});
},
separatorBuilder: (context, index) {
return const Divider(
height: 4,
color: Colors.black,
);
},
),
),
);
}
}
정말 좋은 정보 감사합니다!