Flutter歌词展示插件mmoo_lyric的使用

Flutter歌词展示插件mmoo_lyric的使用

flutter_lyric 插件简介

flutter_lyric 是一个用于展示歌词的 Flutter 插件。它提供了丰富的配置选项,可以轻松实现歌词滚动、拖动等功能。

运行截图

使用步骤

1. 添加依赖到 pubspec.yaml

在项目的 pubspec.yaml 文件中添加 flutter_lyric 依赖:

dependencies:
  flutter_lyric: ^1.0.3 # 请使用最新版本

然后执行以下命令以更新依赖:

flutter pub get

2. 创建 LyricController

LyricController 是用于控制歌词播放进度的对象。需要传入 vsync 参数以便支持动画效果。

var controller = LyricController(vsync: this);

3. 将歌词字符串转换为歌词列表

使用 LyricUtil.formatLyric 方法将歌词字符串转换为歌词列表。

// 歌词字符串
var songLyc = """
[00:00.000] 作曲 : Maynard Plant/Blaise Plant/菊池拓哉 
[00:00.226] 作词 : Maynard Plant/Blaise Plant/菊池拓哉
[00:00.680]明日を照らすよSunshine
...
""";

// 转换歌词
var lyrics = LyricUtil.formatLyric(songLyc);

4. 创建 LyricWidget

LyricWidget 是实际用于展示歌词的控件。需要传入歌词列表、歌词控制器以及其他配置项。

var lyricWidget = LyricWidget(
  size: Size(double.infinity, double.infinity), // 设置歌词区域大小
  lyrics: lyrics, // 转换后的歌词列表
  controller: controller, // 歌词控制器
);

完整示例代码

以下是一个完整的示例代码,展示了如何使用 flutter_lyric 插件来展示歌词。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: LyricPage(),
    );
  }
}

class LyricPage extends StatefulWidget {
  [@override](/user/override)
  _LyricPageState createState() => _LyricPageState();
}

class _LyricPageState extends State<LyricPage> with TickerProviderStateMixin {
  late LyricController controller;
  List<LyricLine> lyrics = [];

  [@override](/user/override)
  void initState() {
    super.initState();

    // 初始化歌词控制器
    controller = LyricController(vsync: this);

    // 定义歌词字符串
    var songLyc = """
    [00:00.000] 作曲 : Maynard Plant/Blaise Plant/菊池拓哉 
    [00:00.226] 作词 : Maynard Plant/Blaise Plant/菊池拓哉
    [00:00.680]明日を照らすよSunshine
    ...
    """;

    // 将歌词字符串转换为歌词列表
    lyrics = LyricUtil.formatLyric(songLyc);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Flutter 歌词展示')),
      body: Center(
        child: LyricWidget(
          size: Size(double.infinity, double.infinity), // 设置歌词区域大小
          lyrics: lyrics, // 转换后的歌词列表
          controller: controller, // 歌词控制器
        ),
      ),
    );
  }
}

更多关于Flutter歌词展示插件mmoo_lyric的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter歌词展示插件mmoo_lyric的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


mmoo_lyric 是一个用于在 Flutter 应用中展示歌词的插件。它可以帮助你轻松地在应用中实现歌词同步展示的功能。以下是如何使用 mmoo_lyric 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  mmoo_lyric: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 mmoo_lyric 插件:

import 'package:mmoo_lyric/mmoo_lyric.dart';

3. 使用 Lyric 组件

mmoo_lyric 提供了一个 Lyric 组件,你可以将其添加到你的 UI 中。以下是一个简单的示例:

class LyricsPage extends StatefulWidget {
  [@override](/user/override)
  _LyricsPageState createState() => _LyricsPageState();
}

class _LyricsPageState extends State<LyricsPage> {
  String lyrics = """
[00:00.00] 歌曲开始
[00:10.00] 这是第一行歌词
[00:20.00] 这是第二行歌词
[00:30.00] 这是第三行歌词
""";

  double currentTime = 0.0;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('歌词展示'),
      ),
      body: Column(
        children: [
          Expanded(
            child: Lyric(
              lyric: lyrics,
              currentTime: currentTime,
              onLyricTap: (LyricBean lyric) {
                print('点击了歌词:${lyric.lyric}');
              },
              lyricStyle: TextStyle(
                fontSize: 16.0,
                color: Colors.black,
              ),
              highlightStyle: TextStyle(
                fontSize: 18.0,
                color: Colors.blue,
              ),
            ),
          ),
          Slider(
            value: currentTime,
            min: 0.0,
            max: 60.0,
            onChanged: (value) {
              setState(() {
                currentTime = value;
              });
            },
          ),
        ],
      ),
    );
  }
}
回到顶部