Я пытался показать sh другой вид, в котором есть только текст. Мое главное представление имеет анимацию, которая делает текст из второго представления анимированным после Navigator.pu sh. Я попытался остановить контроллер анимации и попытался открыть главное окно (не удалось заставить его работать правильно).
Future.delayed(const Duration(seconds: 3), () {
controller.stop();
setState(() {
// Tried this
// Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) =>
// SecondScreen()), (Route<dynamic> route) => false);
//And this
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondScreen()
)
);
});
});
Вот так я инициализирую контроллер.
@override
void initState() {
super.initState();
controller = AnimationController(vsync: this, duration: const Duration(seconds: 2));
animation = Tween<double>(begin: 0, end: 300).animate(controller)
..addListener((){
setState((){
});
});
controller.forward();
}
@override
void dispose(){
controller.dispose();
super.dispose();
}
И здесь я вызвал функцию (плагин) анимации.
children: <Widget>[
Image.asset("images/logo.png"),
SpinKitFadingCircle(
color: Colors.white,
controller: controller,
),
],
Редактировать Это помогло мне: Flutter: избегать метода build () предыдущего вызываемого маршрута при переходе к следующему маршруту Точка не должна была вызывать Navigator.pu sh в методе сборки. Когда я вызвал его в initState, он работал нормально.