[flutter10] Image Carousel

ํ•œ๋ณ„onestarยท2024๋…„ 5์›” 23์ผ

flutter ์‹ค์ „

๋ชฉ๋ก ๋ณด๊ธฐ
11/15
post-thumbnail

๐Ÿ“Œ Timer ์‚ฌ์šฉ๋ฒ•
๐Ÿ“Œ ์ด๋ฏธ์ง€ ์‚ฌ์šฉ๋ฒ•
๐Ÿ“Œ PageView ์‚ฌ์šฉ๋ฒ•
๐Ÿ“Œ map() ํ•จ์ˆ˜ ์‹ค์ „
๐Ÿ“Œ initState(), dispose() ์‹ค์ „
๐Ÿ“Œ ์ƒํƒœ๋ฐ” ํ…Œ๋งˆ ๋ณ€๊ฒฝ



โœ”๏ธ Timer

Timer๋ž€โ“
์ง€์ •ํ•œ ์‹œ๊ฐ„์ด ์ง€๋‚œ ๋’ค ํ•œ๋ฒˆ ๋˜๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

- Timer

import 'dart:async';

void main() {
  Timer(
  	//์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๊ธฐ๊ฐ„ ์ž…๋ ฅ
    Duration(seconds: 10),
    //๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์— ์‹คํ–‰ํ•  ํ•จ์ˆ˜ ์ž…๋ ฅ
    () {
      print('10์ดˆ ๋’ค ์‹คํ–‰ํ•œ๋‹ค.');
    },
  );
}

์ด๋ ‡๊ฒŒ DartPad๋กœ ํ™•์ธํ•ด ๋ดค๋Š”๋ฐ ์‹ค์ œ๋กœ ์ฝ˜์†”์ฐฝ์— 10์ดˆ ๋’ค์— ๋‚ด์šฉ์ด ๋œฌ๋‹ค.

- periodic

import 'dart:async';

void main() {
//periodic ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜๋ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  Timer.periodic(
    Duration(seconds: 10),
    (Timer timer) {
      print('10์ดˆ ๋’ค์— ์‹คํ–‰ํ•œ๋‹ค');
    }
  );
}

์ด๊ฒƒ๋„ DartPad๋กœ ํ•ด๋ณด๋‹ˆ 10์ดˆ๋งˆ๋‹ค console์ฐฝ์— ๋‚ด์šฉ์ด ์ถœ๋ ฅ๋œ๋‹ค.



โœ”๏ธ ์ด๋ฏธ์ง€ ์ถœ๋ ฅํ•˜๊ธฐ

์˜ˆ์ „์— ์ด๋ฏธ์ง€ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํฌ์ŠคํŒ… ํ•ด๋†จ์Œ!



โœ”๏ธ PageView()

์Šค์™€์ดํผ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์œ„์ ฏ์ด๋‹ค.

import 'package:flutter/material.dart';

class HomeScreen extends StatelessWidget {
  const HomeScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: PageView(
        children: [
          Image.asset(
              'asset/img/image_1.jpeg'
          ),
          Image.asset(
              'asset/img/image_2.jpeg'
          ),
          Image.asset(
              'asset/img/image_3.jpeg'
          ),
          Image.asset(
              'asset/img/image_4.jpeg'
          ),
          Image.asset(
              'asset/img/image_5.jpeg'
          ),
        ],
      )
    );
  }
}

์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์„ ๋•Œ ์ด๋ฏธ์ง€๋ฅผ ๋„˜๊ธฐ๋ฉด ๋‹ค์Œ ์ด๋ฏธ์ง€๊ฐ€ ๋ณด์ด๋Š” ์Šค์™€์ดํผ๊ฐ€ ์™„์„ฑ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํŒŒ์ผ๋ช…์ด ์ˆซ์ž๋งŒ ๋‹ค๋ฅด๋‹ˆ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด ๋ณธ๋‹ค.

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: PageView(
      children: [1, 2, 3, 4, 5]
          .map((e) => Image.asset(
                'asset/img/image_$e.jpeg',
                fit: BoxFit.cover,
                //์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„ฃ์–ด ์ฃผ๋ฉด ์ด๋ฏธ์ง€๊ฐ€ ํ™”๋ฉด์— ๊ฝ‰ ์ฐจ๊ฒŒ๋œ๋‹ค.
              ))
          .toList(),
    ));
  }

mapํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋ฟŒ๋ ค์ค€๋‹ค.

profile
ํ•œ๋ณ„์ž‰

0๊ฐœ์˜ ๋Œ“๊ธ€