Flutter音频播放插件waved_audio_player的使用

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

Flutter音频播放插件waved_audio_player的使用

waved_audio_player 是一个用于在Flutter应用中显示音频波形并控制音频播放的插件。它支持从多种来源(如assets、URL和设备文件)加载音频,并提供可定制的用户界面,非常适合需要音频可视化的应用程序,如音乐播放器或音频编辑器。

特性

  • 支持从多种来源(assets、URL、设备文件)可视化音频波形。
  • 提供播放、暂停和跳转音频播放的功能。
  • 可自定义外观,包括颜色、大小和间距等。
  • 易于集成到现有的Flutter应用中。

示例GIF

开始使用

前提条件

  • Flutter SDK (版本 >=1.17.0)
  • Dart SDK (版本 ‘>=3.0.0 <4.0.0’)

安装步骤

  1. 在你的 pubspec.yaml 文件中添加 waved_audio_player 依赖:
dependencies:
  waved_audio_player: ^1.2.1
  audioplayers: ^6.1.0 
  1. 运行以下命令安装包:
flutter pub get

使用方法

下面是一个简单的例子,展示如何在Flutter应用中使用 waved_audio_player 插件:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Waved Audio Player Example'),
        ),
        body: Center(
          child: WavedAudioPlayer(
            source: AssetSource('assets/sample.mp3'),
            iconColor: Colors.red,
            iconBackgoundColor: Colors.blue,
            playedColor: Colors.green,
            unplayedColor: Colors.grey,
            waveWidth: 100,
            barWidth: 2,
            buttonSize: 40,
            showTiming: true,
            onError: (error) {
              print('Error occurred: $error.message');
            },
          ),
        ),
      ),
    );
  }
}

更多示例代码

以下是另一个更详细的示例,展示了如何从不同来源加载音频文件(如资产、URL和设备文件),以及如何选择本地音频文件进行播放:

import 'package:audioplayers/audioplayers.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
import 'package:waved_audio_player/waved_audio_player.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Package Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key}) : super(key: key);

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

class _MyHomePageState extends State<MyHomePage> {
  String filePath = "";

  Future<void> pickFile() async {
    String? _filePath = await FilePicker.platform
        .pickFiles(type: FileType.audio)
        .then((result) => result?.files.first.path);

    if (_filePath != null) {
      // Use the filePath to load audio
      setState(() {
        filePath = _filePath;
      });
      print("Selected file path: $filePath");
    } else {
      print("No file selected");
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Center(child: Text("Waved audio player example")),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            TextButton(
                onPressed: () {
                  pickFile();
                },
                child: const Text("Pick File")),
            const SizedBox(
              height: 30,
            ),
            const Text(
              "Play from Asset:",
              style: TextStyle(fontSize: 20),
            ),
            const SizedBox(
              height: 10,
            ),
            WavedAudioPlayer(
              source: AssetSource('assets/sample.mp3'),
              onError: (err) {
                print('$err');
              },
            ),
            const SizedBox(
              height: 30,
            ),
            const Text(
              "Play from Url:",
              style: TextStyle(fontSize: 20),
            ),
            const SizedBox(
              height: 10,
            ),
            WavedAudioPlayer(
              source: UrlSource('https://download.samplelib.com/mp3/sample-3s.mp3', mimeType: "mp3"),
              playedColor: Colors.white,
              iconColor: Colors.red,
            ),
            const SizedBox(
              height: 30,
            ),
            if (filePath.isNotEmpty)
              const Text(
                "Play from Device:",
                style: TextStyle(fontSize: 20),
              ),
            const SizedBox(
              height: 10,
            ),
            if (filePath.isNotEmpty)
              WavedAudioPlayer(source: DeviceFileSource(filePath)),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用waved_audio_player插件播放音频的一个基本示例。waved_audio_player是一个用于播放WAV文件的轻量级Flutter插件。

首先,确保你已经将waved_audio_player添加到你的pubspec.yaml文件中:

dependencies:
  flutter:
    sdk: flutter
  waved_audio_player: ^最新版本号  # 请替换为当前最新版本号

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

接下来,在你的Flutter项目中,你可以按照以下步骤使用waved_audio_player

  1. 导入插件

在你的Dart文件中导入waved_audio_player

import 'package:waved_audio_player/waved_audio_player.dart';
  1. 初始化播放器

你可以在你的StatefulWidget的initState方法中初始化播放器:

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late WavedAudioPlayer _audioPlayer;

  @override
  void initState() {
    super.initState();
    _audioPlayer = WavedAudioPlayer();
  }

  @override
  void dispose() {
    _audioPlayer.dispose();  // 记得释放资源
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Audio Player Demo'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: () async {
                  String audioFilePath = 'assets/sample.wav';  // 确保你的assets文件夹中有这个WAV文件
                  await _audioPlayer.loadAudio(audioFilePath);
                  await _audioPlayer.play();
                },
                child: Text('Play Audio'),
              ),
              ElevatedButton(
                onPressed: () async {
                  await _audioPlayer.pause();
                },
                child: Text('Pause Audio'),
              ),
              ElevatedButton(
                onPressed: () async {
                  await _audioPlayer.stop();
                },
                child: Text('Stop Audio'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
  1. 添加资源文件

确保你已经在pubspec.yaml中的flutter部分添加了你的WAV文件作为资源:

flutter:
  assets:
    - assets/sample.wav  # 确保路径正确
  1. 运行应用

现在,你可以运行你的Flutter应用,并通过点击按钮来播放、暂停和停止音频。

这个示例展示了如何使用waved_audio_player插件的基本功能。如果你需要更多高级功能,如控制音量、获取播放进度等,可以查阅waved_audio_player的官方文档或源代码。

回到顶部