v0.3.0
flutter_animate_on_scroll
스크롤 이벤트를 기반으로 위젯을 애니메이션화하는 플러터 패키지입니다. UI를 향상시키기 위해 매력적이고 인터랙티브한 스크롤 기반 애니메이션을 쉽게 만들 수 있습니다.
48좋아요 27130일 다운로드160Pub 점수
AndroidiOSWebmacOSWindowsLinux
스크롤 시 애니메이션을 수행하는 Flutter 애니메이션 패키지입니다.
{"sdk":"flutter"}{"sdk":"flutter"}^5.0.0아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
Enables you to create flutter animations on scroll, faster, efficient and with less code.
Put the dependency inside your pubspec.yml and run packages get.
Provide required child [Widget], you can play with animation delay, curves, duration...
import './src/components/custom_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter_animate_on_scroll/flutter_animate_on_scroll.dart';
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20).copyWith(top: 80),
child: Column(
children: [
FadeIn(
config: BaseAnimationConfig(
child: const CustomInfo(name: 'Fade In')
),
),
const SizedBox(height: 20),
FadeInDown(
config: BaseAnimationConfig(
delay: 200.ms,
child: const CustomInfo(name: 'Fade In Down'),
),
),
const SizedBox(height: 20),
FadeInUp(
config: BaseAnimationConfig(
delay: 400.ms,
child: const CustomInfo(name: 'Fade In Up'),
),
),
const SizedBox(height: 20),
FadeInLeft(
config: BaseAnimationConfig(
delay: 600.ms,
child: const CustomInfo(name: 'Fade In Left'),
),
),
const SizedBox(height: 20),
FadeInRight(
config: BaseAnimationConfig(
delay: 200.ms,
child: const CustomInfo(name: 'Fade In Right'),
),
),
const SizedBox(height: 20),
const Divider(),
FadeOut(
config: BaseAnimationConfig(
delay: 400.ms,
child: const CustomInfo(name: 'Fade Out'),
),
),
const SizedBox(height: 20),
FadeOutUp(
config: BaseAnimationConfig(
delay: 600.ms,
child: const CustomInfo(name: 'Fade Out Up'),
),
),
const SizedBox(height: 20),
FadeOutDown(
config: BaseAnimationConfig(
delay: 800.ms,
child: const CustomInfo(name: 'Fade Out Down'),
),
),
const SizedBox(height: 20),
FadeOutLeft(
config: BaseAnimationConfig(
delay: 400.ms,
child: const CustomInfo(name: 'Fade Out Left'),
),
),
const SizedBox(height: 20),
FadeOutRight(
config: BaseAnimationConfig(
delay: 600.ms,
child: const CustomInfo(name: 'Fade Out Right'),
),
),
const SizedBox(height: 220),
],
),
),
),
);
}
}
import 'package:flutter/material.dart';
import 'package:flutter_animate_on_scroll/flutter_animate_on_scroll.dart';
import '../components/custom_info.dart';
class CustomAnimationExample extends StatefulWidget {
const CustomAnimationExample({super.key});
@override
State<CustomAnimationExample> createState() => _CustomAnimationExampleState();
}
class _CustomAnimationExampleState extends State<CustomAnimationExample>
with SingleTickerProviderStateMixin, AutomaticKeepAliveClientMixin{
late AnimationController _animationController;
late Animation<double> _animation;
@override
void initState() {
_animationController = AnimationController(vsync: this, duration: 600.ms);
_animation = Tween<double>(begin: 0.3, end: 1.0).animate(
CurvedAnimation(parent: _animationController, curve: Curves.bounceInOut),
);
super.initState();
}
@override
void dispose() {
_animationController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20).copyWith(top: 80),
child: Column(
children: [
CustomAnimated(
animationController: _animationController,
animation: _animation,
child: ScaleTransition(
scale: _animation,
child: const CustomInfo(name: 'Custom Animation'),
),
),
const SizedBox(height: 20),
const Divider(),
const SizedBox(height: 220),
],
),
),
),
);
}
}
https://github.com/FadiChaalab/flutter_animate_on_scroll/assets/58008170/25ed91f2-e2b0-4321-a077-b22248e69f55
Fade Animation
Slide Animation
Rotate Animation