首先,您需要在 pubspec.yaml 文件中添加 rive 依赖项。然后,您可以使用 Flutter Rive 库来创建动画控制器。

  1. 导入 Flutter Rive 库:
import 'package:flutter_rive/flutter_rive.dart';
  1. 在 State 类中定义一个 RiveArtboard 对象和一个 AnimationController 对象:
RiveArtboard _artboard;
AnimationController _controller;
  1. 在 initState() 方法中初始化这些对象:
@override
void initState() {
  super.initState();
  _loadRiveFile();
  _controller = SimpleAnimation('起飞');
}
  1. 编写 _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);
    });
  }
}
  1. 在按钮的 onTap 事件处理程序中启动动画并设置定时器以在 2 秒后停止动画并开始下降:
onTap: () {
  setState(() {
    _controller.isActive = true;
    Timer(Duration(seconds: 2), () {
      _controller.isActive = false;
      _controller = SimpleAnimation('降落');
    });
  });
}
  1. 在 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: ['起飞'],
      ),
    ),
  ),
)
Flutter Rive 动画:实现起飞、飞行、降落和行走状态

原文地址: https://www.cveoy.top/t/topic/ob9k 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录