반응형
[Flutter] 플러터 기초 (6) - 리스트뷰 위젯(ListView Widget) 예제.
Flutter 플러터 기초 (6) - 리스트뷰 위젯(ListView Widget) 예제.
안녕하세요 정보처리마법사 입니다.
이번 포스팅의 주제는 리스트뷰 위젯에 관한 내용입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
import 'package:flutter/material.dart';
class Product {
final String name;
const Product({this.name});
}
typedef void CartChangedCallback(Product product, bool inCart);
class ShoppingListItem extends StatelessWidget {
final Product product;
final bool inCart;
final CartChangedCallback onCartChanged;
ShoppingListItem({Product product, this.inCart, this.onCartChanged})
: product = product,
super(key: ObjectKey(product));
Color _getColor(BuildContext context) {
return inCart ? Colors.black54 : Theme.of(context).primaryColor;
}
TextStyle _getTextStyle(BuildContext context) {
if (!inCart) return null;
return TextStyle(
color: Colors.black54,
decoration: TextDecoration.lineThrough,
);
}
@override
Widget build(BuildContext context) {
return ListTile(
onTap: () {
onCartChanged(product, inCart);
},
leading: CircleAvatar(
backgroundColor: _getColor(context),
child: Text(product.name[0]),
),
title: Text(product.name, style: _getTextStyle(context)),
);
}
}
class ShoppingList extends StatefulWidget {
final List<Product> products;
const ShoppingList({Key key, this.products}) : super(key: key);
@override
_ShoppingListState createState() => _ShoppingListState();
}
class _ShoppingListState extends State<ShoppingList> {
Set<Product> _shoppingCart = Set<Product>();
void _handleCartChanged(Product product, bool inCart) {
setState(() {
if (!inCart)
_shoppingCart.add(product);
else
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Shopping List'),
),
body: ListView(
padding: EdgeInsets.symmetric(vertical: 8.0),
children: widget.products.map((Product product) {
return ShoppingListItem(
product: product,
inCart: _shoppingCart.contains(product),
onCartChanged: _handleCartChanged,
);
}).toList(),
),
);
}
}
void main() {
runApp(MaterialApp(
title: 'Shopping App',
home: ShoppingList(
products: <Product>[
Product(name: 'candy01'),
Product(name: 'candy02'),
Product(name: 'candy03'),
Product(name: 'candy04'),
Product(name: 'candy05'),
Product(name: 'candy06'),
Product(name: 'candy07'),
Product(name: 'candy08'),
Product(name: 'candy09'),
Product(name: 'candy10'),
Product(name: 'candy11'),
Product(name: 'candy12'),
Product(name: 'candy13'),
Product(name: 'candy14'),
Product(name: 'candy15'),
],
),
));
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
Ctrl + C , Ctrl + V
이상으로 포스팅을 마칩니다. 감사합니다.
잘 못 된 정보가 있으면 말씀해주세요.
공감버튼 클릭은 작성자에게 큰 힘이 됩니다. 행복한 하루 되세요.
“파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음"
반응형
'Flutter' 카테고리의 다른 글
[Flutter] 플러터 기초 (10) - 슬리버 예제(Sliver Tutorial) (0) | 2019.07.12 |
---|---|
[Flutter] 플러터 기초 (7) - 레이아웃 예제(Layout tutorial) (0) | 2019.07.10 |
[Flutter] 플러터 기초 (5) - cupertino ui button, material ui button (0) | 2019.06.28 |
[Flutter] 플러터 기초 (4) - Hello World, FloatingActionButton 등 기본 예제. (0) | 2019.06.28 |
[Flutter] 플러터 기초 (3) - 플러그인 사용하기. 토스트(Toast) 예제. (0) | 2019.06.28 |