
Image Carousel
๐ Timer ์ฌ์ฉ๋ฒ
๐ ์ด๋ฏธ์ง ์ฌ์ฉ๋ฒ
๐ PageView ์ฌ์ฉ๋ฒ
๐ map() ํจ์ ์ค์
๐ initState(), dispose() ์ค์
๐ ์ํ๋ฐ ํ ๋ง ๋ณ๊ฒฝ
Timer๋โ
์ง์ ํ ์๊ฐ์ด ์ง๋ ๋ค ํ๋ฒ ๋๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ์คํํ ์ ์๊ฒ ํด์ค๋ค.
import 'dart:async';
void main() {
Timer(
//์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ ๊ธฐ๊ฐ ์
๋ ฅ
Duration(seconds: 10),
//๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ ์คํํ ํจ์ ์
๋ ฅ
() {
print('10์ด ๋ค ์คํํ๋ค.');
},
);
}
์ด๋ ๊ฒ DartPad๋ก ํ์ธํด ๋ดค๋๋ฐ ์ค์ ๋ก ์ฝ์์ฐฝ์ 10์ด ๋ค์ ๋ด์ฉ์ด ๋ฌ๋ค.
import 'dart:async';
void main() {
//periodic ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ๋ณต์ด ๊ฐ๋ฅํ๋ค.
Timer.periodic(
Duration(seconds: 10),
(Timer timer) {
print('10์ด ๋ค์ ์คํํ๋ค');
}
);
}
์ด๊ฒ๋ DartPad๋ก ํด๋ณด๋ 10์ด๋ง๋ค console์ฐฝ์ ๋ด์ฉ์ด ์ถ๋ ฅ๋๋ค.
์์ ์ ์ด๋ฏธ์ง ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ํฌ์คํ ํด๋จ์!
์ค์์ดํผ๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ์์ ฏ์ด๋ค.
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ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋ฟ๋ ค์ค๋ค.