У меня есть два контроллера анимации, использующих TickerProviderStateMixin первая анимация работает плавно, в то время как вторая не анимируется, когда я запускаю метод forward : вот их объявления:
class HomeAnimator extends StatefulWidget {
@override
_HomeAnimatorState createState() => _HomeAnimatorState();
}
class _HomeAnimatorState extends State<HomeAnimator>
with TickerProviderStateMixin {
AnimationController _controller;
AnimationController _signupctrl;
@override
void initState() {
super.initState();
_controller =
AnimationController(duration: Duration(milliseconds: 900), vsync: this);
_signupctrl =
AnimationController(duration: Duration(milliseconds: 900), vsync: this);
// _controller.forward();
}
@override
void dispose() {
super.dispose();
_controller.dispose();
_signupctrl.dispose();
}
@override
Widget build(BuildContext context) {
return Dahome(controllers: [_controller,_signupctrl]);
}
}
У меня есть два файла для различного набора анимаций:
- Mahome_EnterAnimation: при нажатии на кнопку входа вот соответствующая часть:
class EntAnime {
EntAnime(this.controller)
: opanime = Tween<double>(begin: 1, end: 0).animate(CurvedAnimation(
parent: controller,
curve: Interval(0, 0.5, curve: Curves.fastOutSlowIn),
)),
r_opanime = Tween<double>(begin: 0, end: 1).animate(CurvedAnimation(
parent: controller,
curve: Interval(0, 0.5, curve: Curves.fastOutSlowIn),
)),
hfact = Tween<double>(begin: 0, end: 1).animate(CurvedAnimation(
parent: controller,
curve: Interval(0, 0.5, curve: Curves.fastOutSlowIn),
)),
- Mahome_SignupAnime : когда я нажимаю кнопку регистрации
class SignupAnime {
SignupAnime(this.controller):
qopanime = Tween<double>(begin: 0, end: 1).animate(CurvedAnimation(
parent: controller,
curve: Interval(0.0, 0.5, curve: Curves.fastOutSlowIn),
)),
qhfact = Tween<double>(begin: 0, end: 1).animate(CurvedAnimation(
parent: controller,
curve: Interval(0.5, 0.9, curve: Curves.fastOutSlowIn),
));
final AnimationController controller;
final Animation<double> qopanime;
final Animation<double> qhfact;
}
Вот как я это объявил:
class Dahome extends StatefulWidget {
Dahome({Key key, this.title, @required List<AnimationController> controllers})
: daanime = EntAnime(controllers[0]),
signanime = SignupAnime(controllers[1]),
super(key: key);
final EntAnime daanime;
final SignupAnime signanime;
final String title;
Dastate createState() => Dastate(daanime, signanime);
// @override
}
class Dastate extends State<Dahome> {
Dastate(this.maanime, this.loganime);
final EntAnime maanime;
final SignupAnime loganime;
...
Я вызывал методы пересылки двумя разными кнопками:
Первый здесь, а второй так же:
RaisedButton(
onPressed: () => {
maanime.controller.forward()
},