Flutter音频选择插件better_audio_picker_plugin的使用
Flutter音频选择插件better_audio_picker_plugin的使用
安装开始
- 在你的
pubspec.yaml
文件中添加以下依赖:
dependencies:
better_audio_picker_plugin: ^0.0.6
- 安装依赖:
$ flutter packages get
常规用法
// 监听音频搜索结果
scanResultStreamSubscription = audioPickerPlugin.scanResultStream.listen((event) {
print("音频搜索结果:$event");
setState(() {
audioList = event;
});
});
// 开始扫描音频
audioPickerPlugin.scanAudio();
// 监听音频选择结果
pickResultStreamSubscription = audioPickerPlugin.pickResultStream.listen((event) {
print("音频保存路径:$event");
});
// 选择音频并保存到指定路径
audioPickerPlugin.pickAudio(uri: audio.uri);
特性
- 可以在Android平台上选择音频
完整示例代码
import 'dart:async';
import 'package:better_audio_picker_plugin/better_audio_picker_plugin.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:path/path.dart' as path;
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
late BetterAudioPickerPlugin audioPickerPlugin;
late StreamSubscription scanResultStreamSubscription;
late StreamSubscription pickResultStreamSubscription;
List<BetterAudioPickerPluginAudioModel> audioList = [];
[@override](/user/override)
void initState() {
super.initState();
// 初始化音频选择插件
audioPickerPlugin = BetterAudioPickerPlugin();
// 监听音频搜索结果
scanResultStreamSubscription = audioPickerPlugin.scanResultStream.listen((event) {
print("音频搜索结果:$event");
setState(() {
audioList = event;
});
});
// 监听音频选择结果
pickResultStreamSubscription = audioPickerPlugin.pickResultStream.listen((event) {
print("音频保存路径:$event");
});
// 请求存储权限并开始扫描音频
Future.delayed(Duration.zero, () async {
if (await Permission.storage.isGranted) {
audioPickerPlugin.scanAudio();
} else if (!(await Permission.storage.isPermanentlyDenied)) {
final status = await Permission.storage.request();
if (status == PermissionStatus.granted) {
audioPickerPlugin.scanAudio();
} else {
openAppSettings();
}
} else {
openAppSettings();
}
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: ListView.builder(
itemBuilder: (context, index) {
final audio = audioList[index];
return CupertinoButton(
child: Text("${audio.name}"),
onPressed: () async {
final tempDirectory = await getTemporaryDirectory();
final tempPath = path.join(tempDirectory.path, audio.name);
audioPickerPlugin.pickAudio(uri: audio.uri, path: tempPath);
},
);
},
itemCount: audioList.length,
),
),
);
}
}
更多关于Flutter音频选择插件better_audio_picker_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter音频选择插件better_audio_picker_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
better_audio_picker_plugin
是一个 Flutter 插件,用于从设备中选择音频文件。它提供了一个简单的方式来让用户选择音频文件,并返回文件的路径或其他相关信息。
以下是如何在 Flutter 项目中使用 better_audio_picker_plugin
的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 better_audio_picker_plugin
的依赖。
dependencies:
flutter:
sdk: flutter
better_audio_picker_plugin: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入插件。
import 'package:better_audio_picker_plugin/better_audio_picker_plugin.dart';
3. 使用插件选择音频文件
你可以使用 BetterAudioPickerPlugin
来选择音频文件。以下是一个简单的示例:
class MyHomePage extends StatelessWidget {
Future<void> pickAudio() async {
try {
// 选择音频文件
final audioFile = await BetterAudioPickerPlugin.pickAudio();
// 检查是否成功选择了文件
if (audioFile != null) {
print("Selected audio file path: ${audioFile.path}");
print("Selected audio file name: ${audioFile.name}");
print("Selected audio file size: ${audioFile.size}");
} else {
print("No audio file selected.");
}
} catch (e) {
print("Error picking audio file: $e");
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Audio Picker Example'),
),
body: Center(
child: ElevatedButton(
onPressed: pickAudio,
child: Text('Pick Audio'),
),
),
);
}
}
4. 处理权限
在 Android 和 iOS 上,访问文件系统可能需要特定的权限。确保你已经在 AndroidManifest.xml
和 Info.plist
中添加了必要的权限。
Android
在 AndroidManifest.xml
中添加以下权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
iOS
在 Info.plist
中添加以下权限:
<key>NSMicrophoneUsageDescription</key>
<string>We need access to your microphone to record audio.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>We need access to your photo library to select audio files.</string>
5. 运行项目
现在你可以运行你的 Flutter 项目,并测试音频选择功能。
6. 处理返回的音频文件
BetterAudioPickerPlugin.pickAudio()
返回一个 AudioFile
对象,你可以从中获取音频文件的相关信息,如路径、文件名、大小等。
class AudioFile {
final String path;
final String name;
final int size;
AudioFile({required this.path, required this.name, required this.size});
}