我有一个包含标题和songNumbers列表的json文件。我做了一个列表视图,并使用onTap和Navigator.push将det数据发送到详细信息页面。将数据显示为文本效果很好,但是我想播放本地资产中的歌曲。我使用audioplayers程序包,如果我对一个歌曲名进行硬编码,它可以工作,但是我想将该歌曲名传递到播放功能中以播放所选的歌曲。我的详细页面外观代码(有点简化和缩短)是这样的:
import 'package:flutter/material.dart';
import 'package:audioplayers/audio_cache.dart';
class SongDetail extends StatelessWidget {
final String title;
final String songNumber;
final player = AudioCache();
SongDetail(this.title, this.songNumber);
@override
Widget build(BuildContext context) {
Widget titleSection = Container(
decoration: BoxDecoration(
color: Colors.blueGrey[50],
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Padding(
padding: EdgeInsets.only(left: 20.0),
child: IconButton(icon: Icon(
Icons.play_circle_filled,
size: 40.0),
onPressed: () { player.play('1.mp3'); },
),
),
我可以使用Text(this.title)和Text(this.songNumber)将标题和songNumber显示为文本。但是如何从songNumber到onPressed函数而不是硬编码的“ 1.mp3”中获取数据?
请记住,我是一个新手,可能已经完成了艰巨的任务,但是我喜欢挑战:)
您尝试过这个吗?
onPressed: () { player.play('$songNumber.mp3'); },
建议尝试:onPressed: () { player.play('$songNumber.mp3'); },
给出错误:
Performing hot reload...
Syncing files to device Android SDK built for x86...
Reloaded 4 of 520 libraries in 771ms.
E/flutter (20342): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: FileSystemException: Cannot create file, path = '/data/user/0/com.example.song/cache/' (OS Error: Is a directory, errno = 21)
E/flutter (20342): #0 _File.create.<anonymous closure> (dart:io/file_impl.dart:265:9)
E/flutter (20342): #1 _rootRunUnary (dart:async/zone.dart:1134:38)
E/flutter (20342): #2 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (20342): #3 _FutureListener.handleValue (dart:async/future_impl.dart:139:18)
E/flutter (20342): #4 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:680:45)
E/flutter (20342): #5 Future._propagateToListeners (dart:async/future_impl.dart:709:32)
E/flutter (20342): #6 Future._completeWithValue (dart:async/future_impl.dart:524:5)
E/flutter (20342): #7 Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:554:7)
E/flutter (20342): #8 _rootRun (dart:async/zone.dart:1126:13)
E/flutter (20342): #9 _CustomZone.run (dart:async/zone.dart:1023:19)
E/flutter (20342): #10 _CustomZone.runGuarded (dart:async/zone.dart:925:7)
E/flutter (20342): #11 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:965:23)
E/flutter (20342): #12 _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
E/flutter (20342): #13 _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
E/flutter (20342):