当前音频插件不支持网络。假设我有一个本地音频文件或远程url,我将如何在所有平台上播放?
我找到了一个使用https://pub.dev/packages/video_player的解决方案,所以我在下面作为一个自答问答分享这个问题。
发布于 2019-12-27 10:28:43
Flutter的播放器插件也支持音频,所以你可以使用它。它目前支持Android、iOS和网络,并且在其他平台变得稳定的时候可能会支持它们。
以下是适合播放音频文件的视频播放器菜谱示例。我用一个mp4链接替换了mp3链接,并删除了视频所需的AspectRatio小部件。(不要忘记将播放器依赖项添加到pubspec.yaml中。)
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
void main() => runApp(VideoPlayerApp());
class VideoPlayerApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Video Player Demo',
home: VideoPlayerScreen(),
);
}
}
class VideoPlayerScreen extends StatefulWidget {
VideoPlayerScreen({Key key}) : super(key: key);
@override
_VideoPlayerScreenState createState() => _VideoPlayerScreenState();
}
class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
VideoPlayerController _controller;
Future<void> _initializeVideoPlayerFuture;
@override
void initState() {
// Using an mp3 file instead of mp4.
_controller = VideoPlayerController.network(
'https://file-examples.com/wp-content/uploads/2017/11/file_example_MP3_700KB.mp3',
);
_initializeVideoPlayerFuture = _controller.initialize();
_controller.setLooping(true);
super.initState();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Butterfly Video'),
),
body: FutureBuilder(
future: _initializeVideoPlayerFuture,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
// not wrapped in an AspectRatio widget
return VideoPlayer(_controller);
} else {
return Center(child: CircularProgressIndicator());
}
},
),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
if (_controller.value.isPlaying) {
_controller.pause();
} else {
_controller.play();
}
});
},
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
),
);
}
}
要支持web,还需要添加网站依赖项。
dependencies:
video_player: ^0.10.4
video_player_web:
git:
url: git://github.com/flutter/plugins.git
path: packages/video_player/video_player_web
请注意,这将不会在未来使用git。参见解释这里。
更新:实际上是在没有指定video_player_web
的情况下在web上工作。
更新2:阅读这篇文章以获得解决方案。
更新3:音频看起来是一个很好的解决方案。
更新4:音频是一个很好的解决方案。我正在安卓,iOS,网络和macOS上使用它。
https://stackoverflow.com/questions/59499342
复制相似问题