Flutter 中 音频播放器

847 阅读1分钟

Flutter中有多种方法可以实现音频播放,其中一种常用的方式是使用audioplayers插件。audioplayers插件提供了简单易用的API,可以播放本地文件或网络上的音频文件。

以下是一个简单的示例代码,演示如何在Flutter应用中使用audioplayers插件播放音频文件:

首先,确保在pubspec.yaml文件中添加audioplayers插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  audioplayers: ^0.20.1

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

接下来,可以在Flutter应用的任何地方使用audioplayers插件来播放音频文件。以下是一个简单的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Audio Player Example'),
        ),
        body: Center(
          child: AudioPlayerWidget(),
        ),
      ),
    );
  }
}

class AudioPlayerWidget extends StatefulWidget {
  @override
  _AudioPlayerWidgetState createState() => _AudioPlayerWidgetState();
}

class _AudioPlayerWidgetState extends State<AudioPlayerWidget> {
  AudioPlayer audioPlayer = AudioPlayer();
  String audioUrl = "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3";
  PlayerState audioPlayerState = PlayerState.STOPPED;

  @override
  void initState() {
    super.initState();
    audioPlayer.onPlayerStateChanged.listen((PlayerState state) {
      setState(() {
        audioPlayerState = state;
      });
    });
  }

  @override
  void dispose() {
    audioPlayer.release();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        IconButton(
          icon: Icon(audioPlayerState == PlayerState.PLAYING ? Icons.pause : Icons.play_arrow),
          iconSize: 50.0,
          onPressed: () {
            if (audioPlayerState == PlayerState.PLAYING) {
              audioPlayer.pause();
            } else {
              audioPlayer.play(audioUrl, isLocal: false);
            }
          },
        ),
      ],
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,包含一个带有播放/暂停按钮的页面。点击按钮将切换音频的播放状态。