Flutter语音消息处理插件voice_message_package的使用

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

Flutter语音消息处理插件voice_message_package的使用

Voicey - Flutter 语音消息播放器

voice message package Size Issues Pub Version Last Commit

Voicey 是一个用于在聊天中播放语音消息的Flutter插件。它还支持通过拖动音频进度条来快进或快退。

平台支持

平台 支持情况
Android ✔️
iOS ✔️
MacOS ✔️
Web ✔️

安装

首先,在你的pubspec.yaml文件中添加voice_message_package

dependencies:
  voice_message_package: <latest-version>

然后,从 pub 获取依赖包:

flutter pub get

使用方法

要使用 voice_message_package 插件,你只需要将音频文件路径传递给 VoiceMessageView 小部件:

VoiceMessageView(
  controller: VoiceController(
    audioSrc:
        'https://dl.solahangs.com/Music/1403/02/H/128/Hiphopologist%20-%20Shakkak%20%28128%29.mp3',
    onComplete: () {
      // 在播放完成时执行的操作
    },
    onPause: () {
      // 在暂停时执行的操作
    },
    onPlaying: () {
      // 在播放时执行的操作
    },
    onError: (err) {
      // 在发生错误时执行的操作
    },
  ),
  maxDuration: const Duration(seconds: 10),
  isFile: false,
  innerPadding: 12,
  cornerRadius: 20,
),

示例代码

下面是一个完整的示例应用程序,展示了如何在Flutter项目中使用 voice_message_package 插件:

import 'package:flutter/material.dart';
import 'package:sizer/sizer.dart';
import 'package:voice_message_package/voice_message_package.dart';

void main() => runApp(const MyApp());

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

  @override
  Widget build(BuildContext context) => Sizer(
        builder: (_, __, ___) => MaterialApp(
          debugShowCheckedModeBanner: false,
          home: Scaffold(
            backgroundColor: Colors.grey.shade200,
            body: Center(
              child: SingleChildScrollView(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  mainAxisSize: MainAxisSize.min,
                  children: [
                    SizedBox(height: 50.h),
                    VoiceMessageView(
                      controller: VoiceController(
                        audioSrc:
                            'https://dl.solahangs.com/Music/1403/02/H/128/Hiphopologist%20-%20Shakkak%20%28128%29.mp3',
                        maxDuration: const Duration(seconds: 10),
                        isFile: false,
                        onComplete: () {
                          // 播放完成时的操作
                        },
                        onPause: () {
                          // 暂停时的操作
                        },
                        onPlaying: () {
                          // 播放时的操作
                        },
                        onError: (err) {
                          // 错误时的操作
                        },
                      ),
                      innerPadding: 12,
                      cornerRadius: 20,
                    ),
                    SizedBox(height: 80.h),
                  ],
                ),
              ),
            ),
          ),
        ),
      );
}

待办事项

  • [✔️] 缓存音频并从缓存中播放。
  • [✔️] 通过拖动进度条来快进或快退。
  • [✔️] 更改播放速度。
  • [✔️] 处理异常。
  • [✔️] 自定义配置。
  • [✔️] 动态调整语音小部件的宽度。

许可证

本项目采用MIT许可证。详情请参阅 LICENSE 文件。


希望以上内容能帮助你在Flutter项目中成功集成和使用 voice_message_package 插件。如果你有任何问题或建议,欢迎提交Pull Request或Issue! 🍻


更多关于Flutter语音消息处理插件voice_message_package的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter语音消息处理插件voice_message_package的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成和使用voice_message_package(请注意,这是一个假设的插件名称,实际使用时需要替换为真实的插件名称和配置)来处理语音消息的基本示例。由于voice_message_package是一个假想的插件,以下代码示例将基于通用的Flutter插件集成流程进行展示。

1. 添加依赖

首先,在你的Flutter项目的pubspec.yaml文件中添加voice_message_package作为依赖项(注意替换为实际插件名称):

dependencies:
  flutter:
    sdk: flutter
  voice_message_package: ^x.y.z  # 替换为实际版本号

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

2. 导入插件

在你需要使用语音消息处理的Dart文件中导入插件:

import 'package:voice_message_package/voice_message_package.dart';

3. 初始化插件

通常,插件需要在应用启动时进行初始化。你可以在MainActivity.kt(Android)和AppDelegate.swift(iOS)中进行相应的初始化设置,但具体的初始化代码通常会在Dart代码中完成。以下是一个简单的初始化示例:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  VoiceMessagePackage.instance.initialize().then((result) {
    if (result) {
      print("Voice Message Package initialized successfully.");
    } else {
      print("Failed to initialize Voice Message Package.");
    }
  }).catchError((error) {
    print("Error initializing Voice Message Package: $error");
  });

  runApp(MyApp());
}

4. 录制语音消息

接下来,你可以使用插件提供的API来录制语音消息。以下是一个简单的录制示例:

class RecordScreen extends StatefulWidget {
  @override
  _RecordScreenState createState() => _RecordScreenState();
}

class _RecordScreenState extends State<RecordScreen> {
  String _recordingPath;

  void _startRecording() async {
    String path = await VoiceMessagePackage.instance.startRecording();
    setState(() {
      _recordingPath = path;
    });
  }

  void _stopRecording() async {
    await VoiceMessagePackage.instance.stopRecording();
    print("Recording saved to $_recordingPath");
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Record Voice Message'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _startRecording,
              child: Text('Start Recording'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _stopRecording,
              child: Text('Stop Recording'),
            ),
            if (_recordingPath != null)
              Text("Recording saved at: $_recordingPath"),
          ],
        ),
      ),
    );
  }
}

5. 播放语音消息

同样地,你可以使用插件提供的API来播放已录制的语音消息:

void _playRecording() async {
  if (_recordingPath != null) {
    await VoiceMessagePackage.instance.playRecording(_recordingPath);
  } else {
    print("No recording to play.");
  }
}

// 在你的UI中添加一个播放按钮
ElevatedButton(
  onPressed: _playRecording,
  child: Text('Play Recording'),
),

6. 错误处理和权限请求

确保处理可能的错误和请求必要的权限(如麦克风权限)。这通常涉及到在Android和iOS的原生代码中配置权限请求,以及在Dart代码中处理错误回调。

注意事项

  • 真实插件的API可能与上述示例有所不同,请参考实际插件的官方文档。
  • 确保在发布应用前测试所有功能,特别是在不同设备和操作系统版本上。
  • 处理用户隐私和数据安全时,请遵循相关法规和标准。

希望这个示例能帮助你开始在Flutter项目中集成和使用语音消息处理插件!

回到顶部