当我播放音频时,我的歌曲正在加载,当时在 IOS 中显示错误,当从该页面返回时,我收到此错误“_dependents.isempty' is not true”。对于 android 它工作正常。
这是我的卡片页面,从这里我转到我正在播放歌曲的详细信息页面
import 'package:audioplayers/audioplayers.dart';
import 'package:cwc/constants/constants.dart';
import 'package:cwc/ui/video/video_player.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import '../podcast_details_page.dart';
class PodcastCompoentPurple extends StatefulWidget {
final cwcAudioListData;
const PodcastCompoentPurple({Key? key, this.cwcAudioListData,}) : super(key: key);
@override
State<PodcastCompoentPurple> createState() => _PodcastCompoentPurpleState();
}
class _PodcastCompoentPurpleState extends State<PodcastCompoentPurple> {
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.fromLTRB(18, 0, 18, 0),
child: GestureDetector(
onTap: () async{
isBtnHide=false;
await Navigator.push(context, MaterialPageRoute(builder: (context){
return PodcastDetailsPage(cwcAudioListData:widget.cwcAudioListData);
}));
print("s3 $playing");
if (playing==true) {
//pause song
var res = await audioPlayer.pause();
if (res == 1) {
setState(() {
playing = false;
print("s2 $playing");
});
}
}
print("s1 $playing");
},
child: Container(
height: 234,
// width: 260,
width: double.infinity,
decoration: BoxDecoration(
color: widget.cwcAudioListData['packages'][0]["name"]
.toString()
.toLowerCase() ==
"starter"
? Color(0xff69C583).withOpacity(.25)
:widget.cwcAudioListData['packages'][0]["name"]
.toString()
.toLowerCase() ==
"explorer"
? Color(0xFFC691D3).withOpacity(0.25)
: Color(0xFFF6931E).withOpacity(0.25),
// color: Colors.red,
borderRadius: const BorderRadius.all(
Radius.circular(10),
),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10, 10, 10, 10),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: 145,
// width: 300,
width: double.infinity,
decoration: BoxDecoration(
color: widget.cwcAudioListData['packages'][0]["name"]
.toString()
.toLowerCase() ==
"starter"
? Color(0xff69C583).withOpacity(.25)
: widget.cwcAudioListData['packages'][0]["name"]
.toString()
.toLowerCase() ==
"explorer"
? Color(0xFFC691D3).withOpacity(0.25)
: Color(0xFFF6931E).withOpacity(0.25),
// color: Colors.red,
borderRadius: const BorderRadius.all(
Radius.circular(10),
),
image: DecorationImage(
image: NetworkImage('${widget.cwcAudioListData['coverImage']}'),
fit: BoxFit.cover,
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Center(
child: CircleAvatar(
backgroundColor: Color(0xffF1F2F6).withOpacity(0.5),
radius: 23,
child: Icon(
Icons.headphones,
size: 24,
color: Color(0xffF1F2F6).withOpacity(1),
),
),
),
],
),
),
SizedBox(
height: 10,
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'${widget.cwcAudioListData['title']}',
style: GoogleFonts.poppins(
fontWeight: FontWeight.w600,
fontSize: 14,
color: Color(0xFF444444)),textAlign: TextAlign.center,
),
Text(
'${widget.cwcAudioListData['description']}',
maxLines: 2,
style: GoogleFonts.poppins(
fontSize: 12, color: Color(0xFF444444)),
),
],)
],
),
),
),
),
);
}
}
这是我的详细信息页面。
import 'package:audioplayers/audioplayers.dart';
import 'package:cwc/constants/constants.dart';
import 'package:cwc/constants/top_card.dart';
import 'package:cwc/ui/video/video_screen.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:intl/intl.dart';
import 'package:flutter/material.dart';
class PodcastDetailsPage extends StatefulWidget {
final cwcAudioListData;
const PodcastDetailsPage({Key? key, this.cwcAudioListData}) : super(key: key);
@override
_PodcastDetailsPageState createState() => _PodcastDetailsPageState();
}
class _PodcastDetailsPageState extends State<PodcastDetailsPage> {
Duration duration = new Duration();
Duration position = Duration();
var url = '';
@override
void initState() {
url=widget.cwcAudioListData['upload'].toString();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Color(0xffffffff).withOpacity(1),
body: SafeArea(
child: Stack(
children: [
Container(
width: double.infinity,
height: 350,
decoration: BoxDecoration(
color: Color(0xffF6931E),
image: DecorationImage(
image: NetworkImage('${widget.cwcAudioListData["coverImage"]}'),
fit: BoxFit.cover,
),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.fromLTRB(18, 12, 0, 0),
child: GestureDetector(
onTap: () {
Navigator.pop(context);
},
child: const CircleAvatar(
radius: 23,
backgroundColor: Colors.white,
child: Icon(Icons.arrow_back_ios_new,
color: Colors.black),
),
),
),
const SizedBox(
height: 138,
),
Padding(
padding: EdgeInsets.fromLTRB(18, 0, 18, 15),
child: Container(
height: 80,
),
),
],
),
),
Padding(
padding: const EdgeInsets.only(top: 270.0),
child: Container(
decoration: const BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topRight: Radius.circular(24.0),
topLeft: Radius.circular(24.0),
),
),
// height: 50,
width: double.infinity,
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.fromLTRB(19, 33, 0, 0),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'${widget.cwcAudioListData["title"]}',
style: GoogleFonts.poppins(
fontSize: 18,
color: Color(0xff444444),
fontWeight: FontWeight.w600,
),
),
Text(
"${formateDat(DateTime.parse(widget.cwcAudioListData['uploadDate']))} at ${DateFormat("hh:mm a").format(DateFormat("yyyy-MM-ddTHH:mm:ssZ").parseUTC("${widget.cwcAudioListData['uploadDate']}").toLocal())}",
// 'Sept, 10th 2021',
style: GoogleFonts.poppins(
fontSize: 12,
color: Color(0xff8F9698),
fontWeight: FontWeight.w600,
),
),
Text(
'FREE to watch',
style: GoogleFonts.poppins(
fontSize: 14,
color: Color(0xff69C583),
fontWeight: FontWeight.w500,
),
),
],
),
)
],
),
Padding(
padding: const EdgeInsets.fromLTRB(20, 20, 0, 0),
child: Text(
'Video Description',
style: GoogleFonts.poppins(
fontSize: 18,
color: Color(0xFF69C583),
fontWeight: FontWeight.w500),
),
),
Padding(
padding: const EdgeInsets.fromLTRB(20, 8, 17, 22),
child: Text(
'${widget.cwcAudioListData["description"]}',
style: GoogleFonts.poppins(
fontSize: 13,
fontWeight: FontWeight.normal,
color: Color(0xff444444),
),
),
),
],
),
),
),
)
],
),
),
bottomNavigationBar: isBtnHide == false
? Container(
color: Colors.white,
child: Padding(
padding: const EdgeInsets.fromLTRB(0, 10, 0, 10),
child: Row(
children: [
SizedBox(
width: 30,
),
Expanded(
child: ElevatedButton(
style: ButtonStyle(
backgroundColor:
MaterialStateProperty.all(Color(0xFF158998)),
shape: MaterialStateProperty.all<
RoundedRectangleBorder>(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
side: BorderSide(
color: Colors.teal, width: 0.0)))),
onPressed: () async {
setState(() {
isBtnHide = true;
});
getAudio();
},
child: Padding(
padding: const EdgeInsets.all(15.0),
child: Text(
'Listen Now',
style: GoogleFonts.poppins(fontSize: 14),
),
),
),
),
const SizedBox(
width: 30,
),
],
),
),
)
: Container(
color: Colors.white,
height: 80,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 29.0),
child:
duration.toString().split(".")[0].toString() == "0:00:00" ? Padding(
padding: const EdgeInsets.all(8.0),
child: CircularProgressIndicator(color: selectBlueColor,),
): InkWell(
onTap: () {
getAudio();
},
child: Icon(
playing == false ||
position.inSeconds.toDouble() ==
duration.inSeconds.toDouble()
? Icons.play_circle_outline
: Icons.pause_circle_outline,
size: 40,
color: selectBlueColor,
),
),
),
Column(
children: [
slider(),
Row(
children: [
Text(
"${position.toString().split(".")[0]}",
style: TextStyle(fontWeight: FontWeight.w700),
),
SizedBox(
width: MediaQuery.of(context).size.width / 2.55,
),
Text(
"${duration.toString().split(".")[0]}",
style: TextStyle(fontWeight: FontWeight.w300),
),
],
)
],
)
],
),
),
);
}
Widget slider() {
return Container(
width: MediaQuery.of(context).size.width / 1.3,
child: Slider.adaptive(
activeColor: selectBlueColor,
inactiveColor: Colors.grey[350],
value: position.inSeconds.toDouble(),
min: 0.0,
max: duration.inSeconds.toDouble(),
onChanged: (double value) {
print(duration.inSeconds.toDouble());
setState(() {
audioPlayer.seek(Duration(seconds: value.toInt()));
});
}));
}
Future<void> getAudio() async {
// playing is false by default
print(playing);
if (playing) {
//pause song
var res = await audioPlayer.pause();
if (res == 1) {
setState(() {
playing = false;
});
}
} else {
//play song
var res = await audioPlayer.play(url, isLocal: true);
if (res == 1) {
setState(() {
print(res);
playing = true;
});
}
}
audioPlayer.onDurationChanged.listen((Duration d) {
// print('Max duration: $d');
if (mounted) {
setState(() => duration = d);
}
});
audioPlayer.onAudioPositionChanged.listen((Duration dd) {
if (mounted) {
setState(() {
position = dd;
});
}
});
}
}
formateDat(DateTime date) {
final DateFormat formatter = DateFormat.MMM();
String formatted = formatter.format(date);
formatted = "${formatted} " + "${date.day}";
var week = DateFormat('EEEE').format(date);
var we = week[0] + week[1] + week[2];
return "$we, " + formatted;
}
这是我的错误