【问题标题】:Playing an asset with 'audioplayers' package in Flutter在 Flutter 中使用“音频播放器”包播放资产
【发布时间】:2022-12-18 18:53:25
【问题描述】:

谁能告诉我如何使用这个最新的库来播放 flutter 根目录中资产文件夹中的单个音频文件? pub.dev 上这个库的代码示例相当难懂

【问题讨论】:

    标签: flutter


    【解决方案1】:

    首先创建一个AudioPlayer类的实例。

    final player = AudioPlayer();

    然后在player.setSource方法中添加资产文件。

    await player.setSource(AssetSource('sounds/coin.wav'));

    更多Getting Started文档

    【讨论】:

    • 我试着按照这个但它说找不到:/data/user/0/com.MyOwner.MyApp/cache/sounds/coin.wav:打开失败。为什么它在缓存中查找?我如何设置它以查看资产?
    【解决方案2】:

    就像下面的 sn-p 一样简单。 click.mp3 位于 assets 文件夹中。

    final player = AudioPlayer();
    player.play(AssetSource('click.mp3')),
    

    一个完整的例子:

    import 'package:audioplayers/audioplayers.dart';
    import 'package:flutter/material.dart';
    
    void main() {
      runApp(const MyApp());
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({Key? key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: const MyHomePage(),
          debugShowCheckedModeBanner: false,
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      const MyHomePage({Key? key}) : super(key: key);
    
      @override
      State<MyHomePage> createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      AudioPlayer? _player;
    
      @override
      void dispose() {
        _player?.dispose();
        super.dispose();
      }
    
      void _play() {
        _player?.dispose();
        final player = _player = AudioPlayer();
        player.play(AssetSource('click.mp3'));
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: const [
                Text(
                  'Click on the play button to play a sound',
                ),
              ],
            ),
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: _play,
            tooltip: 'Play',
            child: const Icon(Icons.volume_up),
          ),
        );
      }
    }
    

    【讨论】:

    • 很高兴知道!如果您接受 ✅ 答案是正确的,我将不胜感激(以及其他用户)。这样未来的读者就会知道哪个答案是正确的。
    • 我试着按照这个但它说找不到:/data/user/0/com.MyOwner.MyApp/cache/sounds/click.mp3:打开失败。为什么它在缓存中查找?我如何设置它以查看资产?
    【解决方案3】:

    下面的代码块对我有用。

         TextButton(
                onPressed: () async {
                  final player = AudioPlayer();
                  player.play(AssetSource('note1.wav'));
                },
                child: Text('click me'),
              ),
    

    当您按下点我按钮 note1.wav 音频文件将播放。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      相关资源
      最近更新 更多