问题描述
所以我想要做的是在我拥有的所有 3 个选项卡中保留最后一行的状态,但我不确定我该怎么做,有什么帮助吗?
如果有意义的话,我想基本上将滑块和持续时间等保留在我拥有的所有选项卡中,现在它只能按预期在第一个选项卡上工作
此外,使用 provider 的方法可能比将所有 7 个输入移动到歌曲卡更好,因此如果您也能提供帮助,那就太好了
import 'package:Flutter/material.dart';
import 'package:audioplayers/audioplayers.dart';
import 'package:music_playerrrrr/providers/songs.dart';
import 'package:music_playerrrrr/screens/tracks_screen.dart';
import 'package:provider/provider.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (context) => Songs(),child: DefaultTabController(
length: 3,child: MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Music Player'),bottom: TabBar(
tabs: [
Tab(
text: 'Tracks',),Tab(
text: 'Albums',Tab(
text: 'lol',],body: TabBarView(
children: [
TracksScreen(),Scaffold(),);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,body: Column(
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.all(0),child: ListView.builder(
itemCount: Provider.of<Songs>(context).songsList.length,itemBuilder: (context,i) {
final song = Provider.of<Songs>(context).songsList[i];
final durationInMs =
Provider.of<Songs>(context).songsList[i].duration;
final duration = millisecondsToMinutes(durationInMs);
final songId = song.id;
final filePath = song.filePath;
return SongCard(
song.title,song.artist,duration,songId,filePath,checkIfSongClicked,player,);
},if (isSongClickedOrNot)
Container(
width: MediaQuery.of(context).size.width,height: 70,color: Colors.pink,child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,children: [
SizedBox(
width: 10,Text(
_position.inSeconds.remainder(60) < 10
? '${_position.inMinutes.toString()}:0${_position.inSeconds.remainder(60).toString()}'
: '${_position.inMinutes.toString()}:${_position.inSeconds.remainder(60).toString()}',style: TextStyle(color: Colors.white,fontSize: 20)),Expanded(
child: Slider(
min: 0,max: _duration.inSeconds.todouble(),value: _position.inSeconds.todouble(),onChanged: (value) {
setState(() {
seekToSecond(value.toInt());
});
},SizedBox(
width: 10,IconButton(
iconSize: 50.0,icon: isPlayingOrNot
? Icon(Icons.pause)
: Icon(Icons.play_arrow),onpressed: () {
if (isPlayingOrNot) {
player.pause();
setState(() {
isPlayingOrNot = false;
});
} else {
player.resume();
setState(() {
isPlayingOrNot = true;
});
}
},)
],);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)