import
'package:flutter/material.dart'
;
void
main() {
runApp(MyApp());
}
class
MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return
MaterialApp(
theme: ThemeData(
primarySwatch: Colors.green,
),
debugShowCheckedModeBanner:
false
,
home: AnimatedScrollViewDemo(),
);
}
}
class
AnimatedScrollViewDemo extends StatefulWidget {
@override
_AnimatedScrollViewDemoState createState() => _AnimatedScrollViewDemoState();
}
class
_AnimatedScrollViewDemoState extends State<AnimatedScrollViewDemo> {
final List<String> items = List.generate(50, (index) =>
'Item $index'
);
ScrollController _controller = ScrollController();
@override
Widget build(BuildContext context) {
return
Scaffold(
appBar: AppBar(
title: Text(
'Animated Scroll View Demo'
),
),
body: ListView.builder(
controller:
_controller,
itemCount: items.length,
itemBuilder: (context, index) {
return
AnimatedItemWidget(
index: index,
item: items[index],
);
},
),
);
}
}
class
AnimatedItemWidget extends StatefulWidget {
final
int
index;
final String item;
AnimatedItemWidget({required
this
.index, required
this
.item});
@override
_AnimatedItemWidgetState createState() => _AnimatedItemWidgetState();
}
class
_AnimatedItemWidgetState extends State<AnimatedItemWidget>
with SingleTickerProviderStateMixin {
late AnimationController _animationController;
late Animation<
double
> _animation;
@override
void
initState() {
super.initState();
_animationController = AnimationController(
vsync:
this
,
duration: Duration(seconds: 4),
);
_animation = Tween<
double
>(begin: 0, end: 1).animate(_animationController);
_animationController.forward();
}
@override
Widget build(BuildContext context) {
return
FadeTransition(
opacity: _animation,
child: Card(
elevation: 2,
margin: EdgeInsets.all(8),
child: ListTile(
title: Text(widget.item),
),
),
);
}
@override
void
dispose() {
_animationController.dispose();
super.dispose();
}
}