我正在使用audioplayers
包为我的应用程序添加声音,但在第一次构建时没有播放声音。然而,在热重启时加载文件时,我会得到以下异常:
E/flutter (32175): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: Unable to load asset: assets/assets/click.mp3
E/flutter (32175): #0 PlatformAssetBundle.load (package:flutter/src/services/asset_bundle.dart:221:7)
E/flutter (32175): <asynchronous suspension>
E/flutter (32175): #1 AudioCache._fetchAsset (package:audioplayers/audio_cache.dart:60:29)
E/flutter (32175): #2 AudioCache.fetchToMemory (package:audioplayers/audio_cache.dart:67:30)
E/flutter (32175): <asynchronous suspension>
E/flutter (32175): #3 AudioCache.load (package:audioplayers/audio_cache.dart:82:37)
E/flutter (32175): #4 AudioCache.getAbsoluteUrl (package:audioplayers/audio_cache.dart:140:23)
E/flutter (32175): #5 AudioCache.play (package:audioplayers/audio_cache.dart:103:24)
E/flutter (32175): #6 _MapScreenState.build.<anonymous closure> (package:fixit_cloud_biking/Screens/map_screen.dart:1239:46)
E/flutter (32175): #7 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:706:14)
E/flutter (32175): #8 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:789:36)
E/flutter (32175): #9 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (32175): #10 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
E/flutter (32175): #11 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
E/flutter (32175): #12 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:199:7)
E/flutter (32175): #13 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:467:9)
E/flutter (32175): #14 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:76:12)
E/flutter (32175): #15 PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:117:9)
E/flutter (32175): #16 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8)
E/flutter (32175): #17 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:115:18)
E/flutter (32175): #18 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:7)
E/flutter (32175): #19 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
E/flutter (32175): #20 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter (32175): #21 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter (32175): #22 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter (32175): #23 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter (32175): #24 _rootRunUnary (dart:async/zone.dart:1138:13)
E/flutter (32175): #25 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (32175): #26 _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter (32175): #27 _invoke1 (dart:ui/hooks.dart:273:10)
E/flutter (32175): #28 _dispatchPointerDataPacket (dart:ui/hooks.dart:182:5)
E/flutter (32175):
我将文件放在与所有图标使用的图片位于同一资产文件夹中,因此pubspec.yaml
文件中的缩进是正确的。
问题不应该是文件命名,因为我使用驼峰命名法或单词命名(从命名带空格的图像中得出教训..)。
值得一提的是,如果我将文件拖放到assets
文件夹上,就会出现错误。我尝试删除文件夹,重新创建它,然后拖放会起作用,但只能一次..第二次添加的文件会引发错误。
这是应该播放声音的按钮:
IconButton(
icon: Image.asset('assets/centerMapButton.png'),
iconSize: 60,
onPressed: () async {
await widget.cache.play('assets/click.mp3',
volume: 50, mode: PlayerMode.MEDIA_PLAYER);
print('Center map button pressed');
_mapController.move(userLocation, 16);
}),
AudioCache()
被声明为AudioCache cache = new AudioCache();
。
play('assets/click.mp3')
是错误的,play('click.mp3')
按预期工作。我从错误信息Unable to load asset: assets/assets/click.mp3
中注意到'assets/'出现了两次,所以我尝试省略它,结果成功了。但我仍然需要解决拖放文件添加问题,因为使用finder复制文件可以正常工作,但显然有些问题。 - Vincenzo