【发布时间】:2021-06-15 12:49:26
【问题描述】:
当我运行重复显示 Lottie 动画的代码时,如何在 Lottie 动画完成后导航主页。
【问题讨论】:
标签: flutter flutter-layout flutter-dependencies flutter-animation
当我运行重复显示 Lottie 动画的代码时,如何在 Lottie 动画完成后导航主页。
【问题讨论】:
标签: flutter flutter-layout flutter-dependencies flutter-animation
您可以在下面复制粘贴运行完整代码
你可以使用AnimationController 和Lottie onLoaded 调用AnimationController forward().whenComplete 然后你可以做Navigator.push
代码sn-p
class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
AnimationController _controller;
@override
void initState() {
super.initState();
_controller = AnimationController(vsync: this);
}
...
Lottie.asset(
'assets/LottieLogo1.json',
controller: _controller,
onLoaded: (composition) {
_controller
..duration = composition.duration
..forward().whenComplete(() => Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondPage()),
));
},
),
要运行工作演示,您需要此文件https://github.com/xvrh/lottie-flutter/blob/master/example/assets/LottieLogo1.json
工作演示
完整代码
import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
AnimationController _controller;
@override
void initState() {
super.initState();
_controller = AnimationController(vsync: this);
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
children: [
Lottie.asset(
'assets/LottieLogo1.json',
controller: _controller,
onLoaded: (composition) {
_controller
..duration = composition.duration
..forward().whenComplete(() => Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondPage()),
));
},
),
],
),
);
}
}
class SecondPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(body: Center(child: Text("Second Page")));
}
}
【讨论】:
显示调用动画和过渡的代码,然后你可以提出一些建议。
【讨论】: