2

我从https://pub.dartlang.org/导入了一个名为 audioplayers 的包。我在 .yaml 文件依赖项中添加了依赖项:

flutter:
    sdk: flutter
  cupertino_icons: ^0.1.2
  audioplayers: ^0.15.1
assets:
    - assets/

note1.wav 是我在 assets 文件夹中的音频文件。

然后我flutter pub get在终端中运行命令。

下面是我的颤振代码:

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

void main() => runApp(XylophoneApp());

class XylophoneApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Center(
            child: FlatButton(
              onPressed: () {
                final player = AudioCache();
                player.play('note1.wav');
              },
              child: Text('click me'),
            ),
          ),
        ),
      ),
    );
  }
}

但是没有声音,而是我收到以下错误:

iOS => call startHeadlessService, playerId e24a78e3-1f9f-439a-8f55-c4a55386da4b
iOS => call play, playerId e24a78e3-1f9f-439a-8f55-c4a55386da4b
play!
isLocal: 1 1
volume: 1.000000 1
position: 0 (null)
setUrl /Users/pratteekshaurya/Library/Developer/CoreSimulator/Devices/13364636-6425-40FF-A7EC-9C2498EFA847/data/Containers/Data/Application/B2C9DBA6-8B70-4D3B-9463-5754D4556893/Library/Caches/note1.wav
player status: 1
iOS -> updateDuration...3.750000
iOS -> invokechannel
iOS -> onSoundComplete...
flutter: Fatal Error: Callback lookup failed!

我是新来的,我无法弄清楚问题是什么,因为我遵循了文档中给出的确切信息。

4

3 回答 3

0

首先尝试重新启动您的应用程序,而不是热重载,而是停止并运行您的应用程序。

您不应该在 FlatButton 的 onPressed() 属性中添加 assets/(顺便说一下不推荐使用 FlatButton 类,请改用 TextButton)。

此外,如果您是 Android Studio 用户,请检查“Dart Packages”文件夹中的“External Libraries”文件夹,您应该会找到如下截图所示的“audioplayers”文件夹,或者如果您是 VisualStudio 用户,请在此处检查“Dependencies”文件夹。如果找不到这个包,说明安装有问题,重新安装这个包试试

关于它在 Android Studio 中的外观的屏幕截图

关于它在 Visual Studio 中的外观的屏幕截图

于 2021-07-28T08:59:47.723 回答
0

In my case the android simulator was the problem. to ensure that is case try rendering in a web app version and you will see the code works fine.

于 2022-02-23T09:43:06.097 回答
0

我认为您需要添加assets到您的onPressed功能。

因此,您的onPressed代码应如下所示:

              onPressed: () {
                final player = AudioCache();
                player.play('assets/note1.wav');
              },
于 2020-07-13T13:41:14.157 回答