#flutter #dart #flutter-layout #flutter-dependencies #flutter-android
#трепетание #dart #флаттер-макет #flutter-зависимости #flutter-android
Вопрос:
Как я могу реорганизовать этот код анимации слайдов, чтобы использовать 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,
),
);
})),
),
Ответ №1:
При изменении инициализации
_controller = AnimationController(
duration: const Duration(seconds: 2),
vsync: this,
)..repeat(reverse: true);
Для
_controller = AnimationController(
duration: const Duration(seconds: 2),
vsync: this,
);
и onLongPress добавить
_controller.forward();
Комментарии:
1. Оказывается, анимация полностью остановилась. Список постоянно отображается.
2. Вы хотите, чтобы это повторялось при длительном нажатии?
3. Нет, я просто хочу, чтобы он сыграл один раз, но он не играет вообще. Список просто сидит там без анимации — например, когда экран загружается, список загружается вместе с ним
4. Что происходит, когда вы вызываете
_controller.forward()