Flutter SVG动画播放插件svgator_player_flutter的使用

发布于 1周前 作者 h691938207 来自 Flutter

Flutter SVG动画播放插件svgator_player_flutter的使用

插件介绍

SVGator’s animation player implementation for Flutter. 该插件用于在Flutter中播放SVG动画。

使用步骤

  1. 下载您的动画项目,从SVGator获取(使用External播放器选项)。
  2. .dart文件复制到您的项目中(放入主lib目录或子目录)
  3. 导入文件(导入类和状态以供API使用)

动画大小

除非指定尺寸参数,否则动画SVG组件将填充可用空间。如果组件加载在一个可滚动容器中(如ListView),则可能需要提供height参数。

示例代码

import './Test-Robot.dart' as SVGator show TestRobot, TestRobotState;

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  GlobalKey<SVGator.TestRobotState>? _SVGatorPlayer = GlobalKey<SVGator.TestRobotState>();

  void _eventListener([String? message]) {
    print("Message received: $message");
  }

  void _runCommand(String command, int? param) {
    _SVGatorPlayer?.currentState?.runCommand(command, param);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Welcome to Flutter'),
        ),
        body: Column(
          children: [
            Expanded(
                child: SVGator.TestRobot(
                  height: 310,
                  key: _SVGatorPlayer,
                  onMessage: _eventListener,
                ),
            )
          ],
        ),
      ),
    );
  }
}

更多信息


示例代码示例

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

import 'dart:convert';

import './Parts.dart';
import './EventLog.dart';
import './MediaButtons.dart';

import './Test-Robot.dart' as SVGator show TestRobot, TestRobotState;

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SVGator - Mobile Player API',
      theme: ThemeData(
        primarySwatch: MaterialColor(svgatorBlue, svgatorBlueMaterial),
      ),
      home: const MyHomePage(title: 'SVGator - Mobile Player API'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final String _url = 'https://www.svgator.com/help/getting-started/svgator-player-js-api';
  GlobalKey<EventLogState> _eventLog = GlobalKey<EventLogState>();
  GlobalKey<SVGator.TestRobotState>? _SVGatorPlayer = GlobalKey<SVGator.TestRobotState>();

  void _eventListener([String? message]) {
    final data = jsonDecode(message ?? '{}');
    _eventLog.currentState?.updateLog(data['event'] ?? '', data['offset']);
  }

  void _runCommand(String command, int? param) {
    _SVGatorPlayer?.currentState?.runCommand(command, param);
  }

  void _launchURL() async {
    if (!await launch(_url)) throw 'Could not launch $_url';
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body:
        Center(
          child: ListView(
              padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 4),
              children: <Widget>[
                logo(),
                logTitle('Svgator Player API - Event Log:', context),
                EventLog(
                  key: _eventLog,
                ),
                SVGator.TestRobot(
                  height: 310,
                  key: _SVGatorPlayer,
                  onMessage: _eventListener,
                ),
                MediaButtons(
                  parentAction: _runCommand,
                ),
                TextButton(
                  onPressed: _launchURL,
                  child: const Text(
                      "Tap here to see SVGator's Full API documentation.",
                      style: TextStyle(
                          color: Color(0xFF2f95dc),
                          fontFamily: 'space-mono',
                          fontSize: 14,
                      ),
                  ),
                ),
              ],
          )
        ),
    );
  }
}

更多关于Flutter SVG动画播放插件svgator_player_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter SVG动画播放插件svgator_player_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用svgator_player_flutter插件来播放SVG动画的示例代码。

第一步:添加依赖

首先,你需要在你的pubspec.yaml文件中添加svgator_player_flutter的依赖:

dependencies:
  flutter:
    sdk: flutter
  svgator_player_flutter: ^最新版本号  # 请确保使用最新版本号

然后运行flutter pub get来安装依赖。

第二步:导入依赖

在你的Dart文件中导入svgator_player_flutter

import 'package:svgator_player_flutter/svgator_player_flutter.dart';

第三步:使用插件

下面是一个完整的示例,展示如何在Flutter中使用svgator_player_flutter来播放SVG动画。

import 'package:flutter/material.dart';
import 'package:svgator_player_flutter/svgator_player_flutter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('SVG Animation Example'),
        ),
        body: Center(
          child: SvgatorPlayer(
            // 这里放置你的SVG动画文件路径(可以是本地资源或网络URL)
            svgSource: 'assets/animations/your_animation.svg', // 确保将SVG文件放在正确的位置
            // 如果需要控制动画,可以使用以下参数
            autoPlay: true, // 是否自动播放
            loopCount: SvgatorPlayerLoopCount.indefinite, // 循环次数,indefinite表示无限循环
            speed: 1.0, // 播放速度,1.0表示正常速度
            // 监听动画状态变化
            onStatusChanged: (status) {
              print('Animation status: $status');
            },
            // 监听动画完成
            onCompleted: () {
              print('Animation completed');
            },
          ),
        ),
      ),
    );
  }
}

注意事项

  1. SVG文件:确保你的SVG文件已经放在assets文件夹中,并在pubspec.yaml文件中正确配置资源路径。例如:

    flutter:
      assets:
        - assets/animations/your_animation.svg
    
  2. 动画控制SvgatorPlayer提供了多个参数来控制动画的播放,比如autoPlayloopCountspeed。你可以根据需要进行调整。

  3. 事件监听:你可以通过onStatusChangedonCompleted来监听动画的状态变化和完成事件。

运行项目

确保你已经完成了上述步骤,然后运行你的Flutter项目:

flutter run

这样,你就可以在Flutter应用中播放SVG动画了。

回到顶部