oboard

oboard

https://oboard.eu.org/
github
email
tg_channel
medium
twitter
bilibili
steam_profiles
follow

Flutter audioplayers パスエラー 未処理の例外: アセットを読み込めません:

最初はこう書きました

//音を鳴らす
var audioPlayer = AudioPlayer();
audioPlayer.setPlayerMode(PlayerMode.lowLatency);
audioPlayer.setReleaseMode(ReleaseMode.loop);
audioPlayer.play(AssetSource('sounds/1.mp3'));

しかし、エラーが出続けました:

Unhandled Exception: Unable to load asset:

これが私のディレクトリです
ディレクトリ構造

その後、ソースコードを詳しく調べました

 // rootBundleからローカルアセットを読み込む
    final byteData = await rootBundle.load('$prefix$fileName');
```dart
prefixがあることに気付きました
さらに上を見ると
```dart
 /// これはあなたのアセットフォルダ内のファイルがあるパスです。
  ///
  /// 例えば、Flameはプレフィックス 'assets/audio/' を使用します。
  /// (最後のスラッシュを含める必要があります!)。
  /// デフォルトのプレフィックス(提供されていない場合)は 'assets/' です。
  /// あなたのファイルは <prefix><fileName> で見つかります(したがって、末尾のスラッシュが
  /// 重要です)。
  String prefix;

  AudioCache({this.prefix = 'assets/'});

なるほど、デフォルトのルートディレクトリは assets / です。
音声ファイルを assets / に移動するか、この prefix を直接変更することができます

audioPlayer.audioCache.prefix = '';

⬆️この行を追加すれば大丈夫です

最終的なコード⬇️

//音を鳴らす
var audioPlayer = AudioPlayer();
audioPlayer.setPlayerMode(PlayerMode.lowLatency);
audioPlayer.setReleaseMode(ReleaseMode.loop);
audioPlayer.audioCache.prefix = '';
audioPlayer.play(AssetSource('sounds/1.mp3'));
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。