微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过不同的选项卡使一个小部件持久化?

如何解决如何通过不同的选项卡使一个小部件持久化?

所以我想要做的是在我拥有的所有 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 举报,一经查实,本站将立刻删除。