[flutter] carousel_slider에서 텍스트 애니메이션 효과 추가하기
Flutter의 carousel_slider
패키지는 이미지나 위젯들을 스와이프로 전환해주는 기능을 제공합니다. 그러나 이 기능에 텍스트 애니메이션 효과를 추가하려면 추가적인 작업이 필요합니다.
Step 1: 애니메이션을 위한 package import
먼저, 텍스트 애니메이션을 구현하기 위해 flutter_sequence_animation
패키지를 설치해야 합니다. pubspec.yaml
파일에 아래의 코드를 추가한 후 flutter pub get
명령어로 패키지를 설치하세요.
dependencies:
flutter_sequence_animation: ^2.0.0
Step 2: 애니메이션 코드 작성
다음으로, 텍스트 애니메이션을 구현하기 위해 다음과 같이 코드를 작성하세요.
import 'package:flutter_sequence_animation/flutter_sequence_animation.dart';
class TextAnimation {
final SequenceAnimation sequenceAnimation;
TextAnimation(this.sequenceAnimation);
Animation get animation => sequenceAnimation['textAnimation'];
void start() {
sequenceAnimation.reset();
sequenceAnimation.delayedStart();
}
}
Step 3: CarouselSlider에 애니메이션 추가
이제 carousel_slider
패키지를 사용하여 슬라이더를 생성하고, 텍스트 애니메이션을 추가해보겠습니다.
import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter/material.dart';
class MyCarousel extends StatefulWidget {
@override
_MyCarouselState createState() => _MyCarouselState();
}
class _MyCarouselState extends State<MyCarousel> {
final List<String> items = ['Item 1', 'Item 2', 'Item 3'];
final TextAnimation textAnimation = TextAnimation(SequenceAnimationBuilder()
.addAnimatable(
animatable: Tween<double>(begin: 0, end: 1),
from: Duration.zero,
to: const Duration(milliseconds: 500),
tag: 'textAnimation',
)
.animate(CurvedAnimation(
parent: TickerProvider,
curve: Curves.easeInOut)));
@override
Widget build(BuildContext context) {
return CarouselSlider.builder(
itemCount: items.length,
itemBuilder: (BuildContext context, int index) {
return AnimatedBuilder(
animation: textAnimation.animation,
builder: (BuildContext context, Widget child) {
return Opacity(
opacity: textAnimation.animation.value,
child: Text(
items[index],
style: TextStyle(fontSize: 20),
),
);
},
);
},
options: CarouselOptions(),
);
}
}
Step 4: 애니메이션 시작하기
마지막으로, 애니메이션을 시작하기 위해 필요한 start()
메소드를 호출해야 합니다. 이는 슬라이더가 화면에 나타날 때마다 호출될 수 있도록 적절한 위치에 배치되어야 합니다.
@override
void initState() {
super.initState();
Future.delayed(Duration.zero, () {
textAnimation.start();
});
}
...
@override
Widget build(BuildContext context) {
...
}
위 코드를 통해 carousel_slider
에 텍스트 애니메이션 효과를 추가할 수 있습니다. flutter_sequence_animation
패키지를 사용하여 텍스트가 나타나고 사라지는 애니메이션을 구현하였습니다.