Flutter Rive 动画:实现起飞、飞行、降落和行走状态
首先,您需要在 pubspec.yaml 文件中添加 rive 依赖项。然后,您可以使用 Flutter Rive 库来创建动画控制器。
- 导入 Flutter Rive 库:
import 'package:flutter_rive/flutter_rive.dart';
- 在 State 类中定义一个 RiveArtboard 对象和一个 AnimationController 对象:
RiveArtboard _artboard;
AnimationController _controller;
- 在 initState() 方法中初始化这些对象:
@override
void initState() {
super.initState();
_loadRiveFile();
_controller = SimpleAnimation('起飞');
}
- 编写 _loadRiveFile() 方法来加载并初始化 RiveArtboard 对象:
Future<void> _loadRiveFile() async {
final bytes = await rootBundle.load('assets/birds.riv');
final file = RiveFile();
if (file.import(bytes)) {
setState(() {
_artboard = file.mainArtboard
..addController(_controller);
});
}
}
- 在按钮的 onTap 事件处理程序中启动动画并设置定时器以在 2 秒后停止动画并开始下降:
onTap: () {
setState(() {
_controller.isActive = true;
Timer(Duration(seconds: 2), () {
_controller.isActive = false;
_controller = SimpleAnimation('降落');
});
});
}
- 在 build() 方法中使用 RiveAnimation.widget 来呈现动画:
child: Container(
width: MediaQuery.of(context).size.width * 0.5,
height: MediaQuery.of(context).size.width * 0.5,
child: _artboard == null
? const SizedBox()
: RiveAnimation.asset(
'assets/birds.riv',
artboard: _artboard,
),
),
示例代码:
floatingActionButton: Positioned(
bottom: 5.0,
right: 5.0,
child: GestureDetector(
onTap: () {
hItems(DateTime.now());
setState(() {
print('回到今天');
_calendarAgendaControllerAppBar.goToDay(DateTime.now());
});
},
child: Container(
width: MediaQuery.of(context).size.width * 0.5,
height: MediaQuery.of(context).size.width * 0.5,
child: RiveAnimation.asset(
'assets/birds.riv',
animations: ['起飞'],
),
),
),
)
原文地址: https://www.cveoy.top/t/topic/ob9k 著作权归作者所有。请勿转载和采集!