[Flutter] ListView.builder๋กœ ๋ฐ˜๋ณต๋˜๋Š” ๋ถ€๋ถ„ ๋งŒ๋“ค๊ธฐ

2022. 4. 17. 23:05ยท ๊ฐœ๋ฐœ/Flutter
728x90
๋ฐ˜์‘ํ˜•

๋ฐ˜๋ณต๋˜๋Š” ๋ถ€๋ถ„์„ ์†์ˆ˜ ์“ฐ์ง€ ์•Š๊ณ  ๋ฐ˜๋ณตํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ListView.builder ์ด๋‹ค. 

 

 

โ—พ Example

์ง€๊ธˆ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด ๋ณผ ๋ถ€๋ถ„์ธ๋ฐ ๋ณด๋ผ์ƒ‰์ด list_view๋ถ€๋ถ„์ด๊ณ  icons๊ฐ€ ํŒŒ๋ž€์ƒ‰๋ถ€๋ถ„์ด๋‹ค

 

 

โ—พ Code

list_view์— ๋ฐ˜๋ณต๋˜๋Š” ๋ถ€๋ถ„์„ ๋”ฐ๋กœ ํŒŒ์ผ(icons.dart)๋กœ ๋นผ์„œ ๋”ํ•˜๋Š”๊ฑฐ๋‹ค. 

 

 

list_view.dart

                Container(
                  margin: EdgeInsets.only(top: 10, bottom: 20),
                  child: Text('${descList[index]}'),
                ),
                Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: <Widget>[
                    Text(
                      '${majorList[index]}',
                      style: TextStyle(color: Colors.grey),
                    ),
                    Container(
                      child: iconList(),
                    ),
                  ],
                ),
              ]));

์ด ๋ถ€๋ถ„์„ ์ฐพ์•„๋ณด๋ ค๊ณ  ๊ตฌ๊ธ€๋ง์„ ์—„์ฒญํ–ˆ๋Š”๋ฐ, ๋‹ค๋“ค body:์— ๋Œ€์ž…ํ•˜๋Š”๊ฑฐ๋งŒ ์žˆ์–ด์„œ container๋‚˜ ๋‹ค๋ฅธ widget์—๋Š” ์–ด๋–ป๊ฒŒ ๋Œ€์ž…ํ•ด์•ผํ•˜๋Š”๊ฑธ๊นŒ?๋ผ๋ฉฐ ๊ณ ๋ฏผ์„ ์ง„์งœ ๋งŽ์ด ํ–ˆ์—ˆ๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ๋Š” ๋ณ„๊ฒƒ ์—†์—ˆ๋‹ค. Row ์•ˆ์— widget๋ถ€๋ถ„์— ๋ญ˜ ๋„ฃ์„ ์ˆ˜ ์žˆ์„๊นŒํ–ˆ์„ ๋•Œ Container์„ ์ƒ๊ฐํ–ˆ๊ณ , ๊ทธ ์•ˆ์— child๋กœ ๋„ฃ์–ด์คฌ๋‹ค. 

 

 

 

 

icons.dart

class iconList extends StatefulWidget {
  @override
  _iconState createState() => _iconState();
}

class _iconState extends State<iconList> {
  final List<String> iconsArr = <String>[
    'icons/picture_cnt.svg',
    'icons/like_cnt.svg',
    'icons/comment_cnt.svg',
  ];

  @override
  Widget build(BuildContext context) {
    return Container(
        width: 110,
        height: 20,
        margin: EdgeInsets.all(10),
        child: ListView.builder(
            scrollDirection: Axis.horizontal,
            shrinkWrap: true,
            itemCount: iconsArr.length,
            itemBuilder: (context, index) {
              return Container(
                  margin: EdgeInsets.only(right: 10),
                  child: Row(children: <Widget>[
                    SvgPicture.asset('${iconsArr[index]}', width: 20),
                    Text('2')
                  ]));
            }));
  }
}

 

โ—พ statefulWidget์€ ์ฒ˜์Œ ๋งŒ๋“ค์–ด๋ด์„œ ์•„์ง ์ต์ˆ™ํ•˜์ง€๋Š” ์•Š์€๋ฐ, state๊ฐ€ ํ•„์š”ํ•˜๊ณ  ๋ฐ˜๋ณตํ•  ๋ฐฐ์—ด๋„ ํ•„์š”ํ•˜๋‹ค. ๋‚˜๋Š” ์•„์ด์ฝ˜ ๊ฒฝ๋กœ๋ฅผ ๋„ฃ์–ด์ค„ ๊ฒƒ์ด๋ผ์„œ String์œผ๋กœ ์„ ์–ธํ•ด์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์คฌ๋‹ค. 

โ—พ ListView.builder๋ฅผ ํ•˜๋ฉด ๋””ํดํŠธ๊ฐ’์ด vertical์ด๋ผ์„œ ๊ฐ€๋กœ๋กœ ์ •๋ ฌํ•ด์ค˜์•ผํ•ด์„œ scrollDirection์„ Axis.horizontal์„ ๋„ฃ์–ด์คฌ๋‹ค. 

โ—พ itemCount๋Š” ๋ฐ˜๋ณต๋˜๋Š” ํšŸ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฑฐ๋ผ์„œ ๋ฐ˜๋ณต๋˜์–ด์•ผ ํ•  ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ’์„ ๋„ฃ์–ด์คฌ๋‹ค. 

 

 

 

 

 

 

 

 

728x90

'๊ฐœ๋ฐœ > Flutter' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”Œ๋Ÿฌํ„ฐ/firebase] signup ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ  (0) 2022.06.21
[Flutter] ์ƒˆ๋กœ์šด ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๊ณ , ๋˜๋Œ์•„๊ฐ€๊ธฐ - ํŽ˜์ด์ง€ ์ด๋™  (0) 2022.05.16
[Flutter/ํ”Œ๋Ÿฌํ„ฐ] BuildContext ๋ž€?  (0) 2022.04.06
[Flutter/ํ”Œ๋Ÿฌํ„ฐ] Drawer menu ๋งŒ๋“ค๊ธฐ!  (0) 2022.04.06
[ํ”Œ๋Ÿฌํ„ฐ] app bar์— ๋ฉ”๋‰ด ์•„์ด์ฝ˜ ๋„ฃ๊ธฐ  (0) 2022.04.05
'๊ฐœ๋ฐœ/Flutter' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”Œ๋Ÿฌํ„ฐ/firebase] signup ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ
  • [Flutter] ์ƒˆ๋กœ์šด ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๊ณ , ๋˜๋Œ์•„๊ฐ€๊ธฐ - ํŽ˜์ด์ง€ ์ด๋™
  • [Flutter/ํ”Œ๋Ÿฌํ„ฐ] BuildContext ๋ž€?
  • [Flutter/ํ”Œ๋Ÿฌํ„ฐ] Drawer menu ๋งŒ๋“ค๊ธฐ!
๋ฐ(Ming) ๐Ÿˆโ€โฌ›
๋ฐ(Ming) ๐Ÿˆโ€โฌ›
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป Frontend Developer
๋ฐ(Ming) ๐Ÿˆโ€โฌ›
Ming devlog
๋ฐ(Ming) ๐Ÿˆโ€โฌ›
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ

๊ณต์ง€์‚ฌํ•ญ

  • About Ming ๐Ÿฐ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (261)
    • ๊ฐœ๋ฐœ (255)
      • ๐Ÿ“ TIL (58)
      • โŒ ์˜ค๋ฅ˜ ๋…ธํŠธ (23)
      • React (23)
      • Next.js (11)
      • React-Native (6)
      • JavaScript (10)
      • Flutter (19)
      • Database (1)
      • ๐Ÿ’ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (21)
      • ๐Ÿ“š English (9)
      • Etc... (25)
      • โ›ต ํ•ญํ•ด99 (49)
    • ๐Ÿ’ป Dev (6)
      • ๐Ÿ“ TIL (4)
      • ๐Ÿ’ฌ Algorithm (1)
      • Etc... (1)

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • twid
  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
  • ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ
  • ๋ถ€ํŠธ์บ ํ”„
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • ๋ฆฌ์•กํŠธ๋„ค์ดํ‹ฐ๋ธŒ
  • TIL
  • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ
  • ์ด์ฝ”๋…ธ๋ฏธ์ŠคํŠธ
  • react-native
  • flutter
  • react
  • ํ•ญํ•ด99
  • ์ฝ”๋”ฉ๊ณต๋ถ€
  • Git
  • Firebase
  • ์˜์–ด๊ณต๋ถ€
  • nextjs
  • leetcode
  • github
  • ์ฝ”ํ…Œ๊ณต๋ถ€
  • ReactNative
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์ฝ”ํ…Œ
  • ๋ฆฌ์•กํŠธ
  • ๊ฐœ๋ฐœ์ž์ผ๊ธฐ
  • todaywhatidid
  • ๊ฐœ๋ฐœ์žํšŒ๊ณ 
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • ํ”Œ๋Ÿฌํ„ฐ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.1
๋ฐ(Ming) ๐Ÿˆโ€โฌ›
[Flutter] ListView.builder๋กœ ๋ฐ˜๋ณต๋˜๋Š” ๋ถ€๋ถ„ ๋งŒ๋“ค๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.