이번 포스트에서는 Flutter 프로젝트에서 cupertino_icons
패키지를 사용하여 아이콘에 애니메이션 효과를 추가하는 방법에 대해 알아보겠습니다.
1. cupertino_icons 패키지 추가하기
먼저, cupertino_icons
패키지를 프로젝트에 추가해야 합니다. 이 패키지는 Flutter에서 iOS 아이콘을 사용할 수 있도록 해주는 패키지입니다. pubspec.yaml
파일을 열고, dependencies
섹션에 다음과 같이 패키지를 추가해주세요.
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.3
수정이 완료되면, 터미널에서 flutter packages get
명령어를 실행하여 패키지를 설치해주세요.
2. 아이콘에 애니메이션 효과 추가하기
cupertino_icons
패키지는 Cupertino 아이콘을 사용할 수 있도록 해줍니다. 이 아이콘들에 애니메이션 효과를 추가하기 위해, AnimatedIcon
위젯을 사용할 수 있습니다. 다음은 예시 코드입니다.
import 'package:flutter/material.dart';
import 'package:cupertino_icons/cupertino_icons.dart';
class AnimatedIconExample extends StatefulWidget {
@override
_AnimatedIconExampleState createState() => _AnimatedIconExampleState();
}
class _AnimatedIconExampleState extends State<AnimatedIconExample>
with TickerProviderStateMixin {
bool _isPlaying = false;
AnimationController _animationController;
@override
void initState() {
super.initState();
_animationController = AnimationController(
vsync: this,
duration: Duration(milliseconds: 500),
);
}
@override
void dispose() {
_animationController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return IconButton(
icon: AnimatedIcon(
icon: AnimatedIcons.play_pause,
progress: _animationController,
),
onPressed: () {
setState(() {
_isPlaying = !_isPlaying;
if (_isPlaying) {
_animationController.forward();
} else {
_animationController.reverse();
}
});
},
);
}
}
위 코드는 AnimatedIconExample
클래스를 정의하고, IconButton
위젯을 생성하여 AnimatedIcon
을 자식 위젯으로 사용하고 있습니다. IconButton
을 누르면 _isPlaying
변수의 값을 변경하고, _isPlaying
값에 따라 AnimationController
의 forward
또는 reverse
메서드를 호출하여 애니메이션을 재생하거나 정지시킵니다.
3. 실행 결과 확인하기
이제 AnimatedIconExample
위젯을 사용하여 애니메이션 효과가 적용된 아이콘을 화면에 표시할 수 있습니다. 필요한 곳에서 AnimatedIconExample
를 사용해보세요!
따로 설정하지 않은 경우, AnimatedIcons.play_pause
아이콘이 사용됩니다. 다른 아이콘을 사용하려면 cupertino_icons
패키지의 아이콘 맵을 참조하여 원하는 아이콘의 이름을 AnimatedIcons
클래스에 전달해주세요.
결론
이번 포스트에서는 cupertino_icons
패키지를 사용하여 플러터 프로젝트에서 아이콘에 애니메이션 효과를 추가하는 방법을 알아보았습니다. 이를 기반으로 프로젝트에 맞는 아이콘 애니메이션을 구현해보세요!