このスライドイン アニメーション コードをリファクタリングして、ボタンで onLongPress を使用するにはどうすればよいですか。
@override void initState() {
super.initState();
_controller = AnimationController(
duration: const Duration(seconds: 2),
vsync: this,
)..repeat(reverse: true);
_offsetAnimation = Tween<Offset>(
begin: Offset.zero,
end: const Offset(1.5, 0.0),
).animate(CurvedAnimation(
parent: _controller,
curve: Curves.elasticIn,
));
}
現在、アニメーションは自動的に繰り返し再生されます。ボタンが3秒間押された後にのみリストがスライドインするようにしたいと思います。これは私のボタンコードです。
child: RaisedButton(
onPressed: (null),
autofocus: false,
clipBehavior: Clip.none,
color: Colors.red,
onLongPress: () => {
setState(() {
isEmerg = !isEmerg;
}),
// Navigator.pushReplacement(
// context,
// MaterialPageRoute(
// builder: (context) => AnimationTest()))
},
child: Text(
'Hold for 3 Secs',
style: TextStyle(
fontWeight: FontWeight.w400,
color: Colors.white,
fontSize: 24.0,
fontFamily: 'Circular'),
),
shape: CircleBorder(),
padding: EdgeInsets.all(70),
),
そして、これは私が onLongPress に表示しているリストです:
SlideTransition(
position: _offsetAnimation,
child: Container(
child: ListView.builder(
itemCount: messages.length,
itemBuilder: (context, index) {
return Card(
child: ListTile(
onTap: () {},
title: Text(messages[index].emergencyType),
subtitle: Text(messages[index].description),
leading: Icon(Icons.message_outlined),
trailing: Text('Send'),
tileColor: Colors.white,
),
);
})),
),