[ํ”Œ๋Ÿฌํ„ฐ/flutter] ์ด๋ฏธ์ง€๋กœ ์›€์ง์ด๋Š” ๋กœ๋”ฉ ์ธ๋””์ผ€์ดํ„ฐ ๋งŒ๋“ค๊ธฐ / flutter AnimatedSwitcher ์‚ฌ์šฉํ•˜๊ธฐ

2023. 1. 29. 17:37ยท ๊ฐœ๋ฐœ/Flutter
728x90
๋ฐ˜์‘ํ˜•

 

์›€์ง์ด๋Š” .gif ์ด๋ฏธ์ง€๋ง๊ณ  ์ •์ ์ธ .jpg ์ด๋ฏธ์ง€๋กœ ์›€์ง์ด๋Š” ๋กœ๋”ฉ ์ธ๋””์ผ€์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค! 

ํ•œ์ฐธ์„ ์ด๊ฒƒ์ €๊ฒƒ ์ฐพ์•„๋ดค์—ˆ๋Š”๋ฐ์š”. 

 

ํ”Œ๋Ÿฌํ„ฐ์˜

AnimatedSwitcher

๋ฅผ ์ด์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋งŒ๋“œ์‹ค ์ˆ˜ ์žˆ์–ด์š”. ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š” ใ…  ์ €๋„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. 

 

๐Ÿ‘‰๐Ÿป ๊ณต์‹ flutter - AnimatedSwitcher ํŽ˜์ด์ง€ ๊ฐ€๊ธฐ

https://api.flutter.dev/flutter/widgets/AnimatedSwitcher-class.html

 

AnimatedSwitcher class - widgets library - Dart API

A widget that by default does a cross-fade between a new widget and the widget previously set on the AnimatedSwitcher as a child. If they are swapped fast enough (i.e. before duration elapses), more than one previous child can exist and be transitioning ou

api.flutter.dev

 

 

โœ… indicator ์ฝ”๋“œ 

class _ImageIndicatorState extends State<ImageIndicator>{
  //์ด๋ฏธ์ง€๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์“ฐ๊ธฐ๋•Œ๋ฌธ์— ์นด์šดํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 
  int _count = 0;
  
  
  //๋กœ๋”ฉ ์ธ๋””์ผ€์ดํ„ฐ์— ๋“ค์–ด๊ฐˆ ์ด๋ฏธ์ง€ ๋ฐฐ์—ด์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 
  var imgList = ["img1","img2","img3"];
  
  
  //ํƒ€์ด๋จธ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. javascript ์˜  setTimeout, setInterval ์™€ ๋น„์Šทํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. 
  //dart:async ํŒจํ‚ค์ง€์— ํฌํ•จ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.
  Timer? timer;

  @override
  void initState() {
  //0.5์ดˆ๋งˆ๋‹ค ์นด์šดํŠธ๋ฅผ ์—…์‹œ์ผœ์ฃผ๋Š” ๊ฒ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์ด๋ฏธ์ง€๊ฐ€ ๋˜๋ฉด ์นด์šดํŠธ๋ฅผ 0์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ ์š”
    Timer.periodic(const Duration(milliseconds: 500), (Timer t){
      final isLast = _count == imgList.length - 1;
      setState(() => _count = isLast ? 0 : _count + 1);
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.stretch,
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        AnimatedSwitcher(duration: Duration(milliseconds: 50),
        transitionBuilder: (Widget child, Animation<double> animation){
          return FadeTransition(child: child, opacity: animation);
        },
        child: Container(
          child: SizedBox(
              width: 50.0,
              height: 50.0,
              child: Image.network(imgList[_count])),
          key: ValueKey<int>(_count),
        ),
        ),
      ],
    );
  }
}

 

ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐ€๋Š”์ง€๋Š” ์œ„์— ์ ์–ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค. 

์•„๋ž˜ Container๋Š” ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๋ฅผ ์žก์•„์ฃผ๋Š”๊ฑฐ๊ณ ์š”. ์นด์šดํŠธ๋ฅผ ์—ฌ๊ธฐ์— ๋Œ€์ž…ํ•ด์„œ ๋ณ€ํ•˜๋Š” ์นด์šดํŠธ์— ๋”ฐ๋ผ์„œ ์ด๋ฏธ์ง€๊ฐ€ ๋ณ€ํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. 

AnimatedSwitcher๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์ง„์„ ์ •ํ•ด์ฃผ๊ณ  FadeTransition ๊ณผ ๊ฐ™์ด ์–ด๋–ป๊ฒŒ transitionํ•  ๊ฒƒ์ธ์ง€ ์ •ํ•ด์ฃผ๊ณ  ๊ทธ ์•ˆ์— ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ ์šฉ๋  child์™€ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์‰ฝ์ฃ ์ž‰?......

FadeTransition๋ง๊ณ  Scale๋„ ์žˆ๊ณ  ๋‹ค์–‘ํ•ด์š”!

 

 

^^.....

 

 

 

 

 

728x90

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

[ํ”Œ๋Ÿฌํ„ฐ] Stateless vs Stateful ๊ฐœ๋…  (0) 2023.05.07
[ํ”Œ๋Ÿฌํ„ฐ/flutter] RxList ๋Š” substring์„ ์“ธ ์ˆ˜ ์—†๋Š” ๊ฒƒ์ธ๊ฐ€!? ๐Ÿ˜ค  (0) 2023.05.05
[ํ”Œ๋Ÿฌํ„ฐ] FutureBuilder ์‚ฌ์šฉํ•˜๊ธฐ - ๋กœ๋”ฉ indicator ๋„ฃ๊ธฐ  (0) 2022.11.25
[ํ”Œ๋Ÿฌํ„ฐ] ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ios ๋””๋ฐ”์ด์Šค ์ธ์‹ ๋ชป ํ•  ๋•Œ  (0) 2022.11.23
[ํ”Œ๋Ÿฌํ„ฐ] TextEditingController ๋กœ input ๊ด€๋ฆฌํ•˜๊ธฐ  (0) 2022.11.08
'๊ฐœ๋ฐœ/Flutter' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”Œ๋Ÿฌํ„ฐ] Stateless vs Stateful ๊ฐœ๋…
  • [ํ”Œ๋Ÿฌํ„ฐ/flutter] RxList ๋Š” substring์„ ์“ธ ์ˆ˜ ์—†๋Š” ๊ฒƒ์ธ๊ฐ€!? ๐Ÿ˜ค
  • [ํ”Œ๋Ÿฌํ„ฐ] FutureBuilder ์‚ฌ์šฉํ•˜๊ธฐ - ๋กœ๋”ฉ indicator ๋„ฃ๊ธฐ
  • [ํ”Œ๋Ÿฌํ„ฐ] ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ios ๋””๋ฐ”์ด์Šค ์ธ์‹ ๋ชป ํ•  ๋•Œ
๋ฐ(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)

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

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

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

์ตœ๊ทผ ๊ธ€

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.1
๋ฐ(Ming) ๐Ÿˆโ€โฌ›
[ํ”Œ๋Ÿฌํ„ฐ/flutter] ์ด๋ฏธ์ง€๋กœ ์›€์ง์ด๋Š” ๋กœ๋”ฉ ์ธ๋””์ผ€์ดํ„ฐ ๋งŒ๋“ค๊ธฐ / flutter AnimatedSwitcher ์‚ฌ์šฉํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

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

๊ฐœ์ธ์ •๋ณด

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

๋‹จ์ถ•ํ‚ค

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

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

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

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

๋ชจ๋“  ์˜์—ญ

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

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