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
'Usage > Flutter' 카테고리의 다른 글
수정가능한 프로필 이미지 만들기 (이미지 위에 버튼) (0) | 2021.08.29 |
---|---|
IndexedStack, bottomNavigation으로 화면 전환 (0) | 2021.08.28 |
[Flutter] 리스트의 항목을 클릭하여 디테일 페이지로 이동할때 hero 애니메이션 적용 (0) | 2021.07.01 |
[Flutter] Json 데이터를 GetX를 활용하여 list view, detail view 만들기 (0) | 2021.07.01 |
[Flutter/Animation] AnimatedSwitcher를 활용한 위젯 바꿀때 애니메이션 효과 넣기 (0) | 2021.06.24 |