Usage/Flutter
[Flutter] GetX를 활용해서 stateless에서 애니메이션 사용하기
MG_conny
2021. 7. 1. 18:39
SingleGetTickerProviderMixin 를 mixin한 GetxController를 상속받은 컨트롤러 만들기
animation을 사용하기위해 SingleGetTickerProviderMixin를 가져옴
class TextAnimation extends GetxController with SingleGetTickerProviderMixin {
Map<String, String?>? post;
AnimationController? animationController;
Animation<Offset>? animationOffset;
@override
void onInit() {
super.onInit();
animationController = AnimationController(
vsync: this,
duration: const Duration(milliseconds: 1000),
);
final curve =
CurvedAnimation(parent: animationController!, curve: Curves.bounceIn);
animationOffset = Tween<Offset>(
begin: const Offset(0.0, -1.0), end: const Offset(0.0, 0.0))
.animate(curve);
animationController!.repeat();
_loadData();
}
void _loadData() {
post = Get.parameters;
}
}
실제 사용
아래와 같이 statefull에서 사용하던 방법처럼 animation 부분에 controller에서 만든 animation을 가져오면 됨
class PostDetailView extends GetView<TextAnimation> {
const PostDetailView();
@override
Widget build(BuildContext context) {
Get.put(TextAnimation());
return Scaffold(
appBar: AppBar(
title: Text(controller.post!['title']!),
),
body: Column(
children: [
Hero(
tag: controller.post!['uid']!,
child: Image.asset(controller.post!['thumbnail']!)),
Column(
children: [
// 아래와 같이 controller에서 애니메이션을 가져오면 됨
SlideTransition(
position: controller.animationOffset!,
child: Text(
controller.post!['title']!,
),
),
Text(
controller.post!['description']!,
),
],
),
],
),
);
}
}
728x90