मैं छवि में प्रदान किए गए लेआउट का निर्माण करना चाहता हूं और मैंने ऐसा किया था, लेकिन मैं चाहता हूं कि सभी बटन भी भविष्य सूची दृश्य निर्माता के रूप में स्क्रॉल करने में सक्षम हों। लेकिन मैं इसे हासिल करने में असमर्थ हूं। मैंने DefaultTabController विजेट के आसपास NEstedScrollView() रैप का इस्तेमाल किया था

enter image description here

 @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: [
          Padding(
            padding: const EdgeInsets.only(top: 10, left: 10, right: 10),
            child: Row(
              children: [
                AddButton(
                    icon: Icons.play_circle_outline_rounded,
                    buttonText: 'Play all',
                    onPressed: () {})
              ],
            ),
          ),
          Expanded(
            child: FutureBuilder(
                future: GetPermissionAndSongs().getAvailableSongs(),
                builder: (BuildContext context, AsyncSnapshot snapshot) {
                  Widget leading;
                  Widget artworkAvailableWidget(dynamic snapshot) {
                    return CircleAvatar(
                      backgroundImage: MemoryImage(snapshot),
                    );
                  }

                  Widget artworkUnavailableWidget(dynamic snapshot) {
                    return CircleAvatar(
                      backgroundImage: AssetImage('images/happy_music.png'),
                      backgroundColor: Colors.grey.shade100,
                    );
                  }

                  Widget artworkLoadingWidget() {
                    return CircleAvatar(
                      child: CircularProgressIndicator(),
                    );
                  }

                  FlutterAudioQuery audioQuery = new FlutterAudioQuery();
                  if (snapshot.data == null) {
                    return Container(
                      child: Center(
                        child: CircularProgressIndicator(),
                      ),
                    );
                  } else {
                    return ListView.builder(
                        itemCount: snapshot.data.length,
                        itemBuilder: (BuildContext context, int index) {
                          return SongPlayCard(
                            imagePath: snapshot.data[index].songArtwork,
                            songPath: snapshot.data[index].songPath,
                            songName: snapshot.data[index].songName,
                            onPress: () {
                              SharedPreferences.getInstance().then((value) {
                                value.setStringList('last_Played', [
                                  snapshot.data[index].songName,
                                  snapshot.data[index].songPath,
                                  snapshot.data[index].artistName,
                                  snapshot.data[index].songId,
                                ]);
                              });
                              changeName(
                                snapshot.data[index].songName,
                                snapshot.data[index].artistName,
                                snapshot.data[index].songPath,
                                snapshot.data[index].songId,
                                _leadingArtwork(leading),
                              );
                            },
                            artistName: snapshot.data[index].artistName,
                            leading: (snapshot.data[index].songArtwork == null)
                                ? FutureBuilder<dynamic>(
                                    future: audioQuery.getArtwork(
                                      type: ResourceType.SONG,
                                      id: snapshot.data[index].songId,
                                    ),
                                    builder: (_, snapshot) {
                                      if (snapshot.data == null) {
                                        leading = artworkLoadingWidget();
                                        return leading;
                                      } else {
                                        if (snapshot.data.isEmpty == false) {
                                          print(snapshot.data);
                                          leading = artworkAvailableWidget(
                                              snapshot.data);
                                          return leading;
                                        } else {
                                          leading = artworkUnavailableWidget(
                                              snapshot.data);
                                          return leading;
                                        }
                                      }
                                    },
                                  )
                                : null,
                          );
                        });
                  }
                }),
          ),
          FutureBuilder(
            future: getLastPlayed(),
            builder: (BuildContext context, AsyncSnapshot snapshot) {
              FlutterAudioQuery audioQuery = new FlutterAudioQuery();
              if (snapshot.data == null) {
                return FloatingPlayer(
                  songName: '',
                  songArtist: "",
                );
              } else {
                if (snapshot.data.isEmpty == false) {
                  String songName =
                      (updatedName == "") ? snapshot.data[0] : updatedName;
                  String artistName = (updatedArtistName == "")
                      ? snapshot.data[2]
                      : updatedArtistName;
                  String songPath = (updatedSongPath == "")
                      ? snapshot.data[1]
                      : updatedSongPath;
                  return FutureBuilder(
                    future: GetPermissionAndSongs()
                        .getLastPlayedArtworks(snapshot.data[0]),
                    builder: (BuildContext context, AsyncSnapshot snapshot) {
                      if (snapshot.data == null) {
                        return Center(
                          child: CircularProgressIndicator(),
                        );
                      } else {
                        return FloatingPlayer(
                          songName: songName,
                          iconData: iconData,
                          songArtist: artistName,
                          imagePath: snapshot.data[0].songArtwork,
                          onPlayOrPause: () {
                            playPause(songPath, null);
                          },
                          leading: (updatedLeadingArtwork == null)
                              ? (leadingArtwork == null)
                                  ? (snapshot.data[0].songArtwork == null)
                                      ? FutureBuilder(
                                          future: audioQuery.getArtwork(
                                              type: ResourceType.SONG,
                                              id: snapshot.data[0].songId),
                                          builder: (_, snapshot) {
                                            if (snapshot.data == null) {
                                              leadingArtwork = CircleAvatar(
                                                child:
                                                    CircularProgressIndicator(),
                                              );
                                              return leadingArtwork;
                                            } else {
                                              if (snapshot.data.isEmpty ==
                                                  false) {
                                                leadingArtwork = CircleAvatar(
                                                  backgroundImage: MemoryImage(
                                                      snapshot.data),
                                                );
                                                return leadingArtwork;
                                              } else {
                                                leadingArtwork = CircleAvatar(
                                                    backgroundImage: AssetImage(
                                                        'images/happy_music.png'),
                                                    backgroundColor:
                                                        Colors.teal.shade600);
                                                return leadingArtwork;
                                              }
                                            }
                                          },
                                        )
                                      : null
                                  : leadingArtwork
                              : updatedLeadingArtwork,
                        );
                      }
                    },
                  );
                } else {
                  return FloatingPlayer(
                    songName: 'Last played unavailable',
                    songArtist: "",
                  );
                }
              }
            },
          ),
        ],
      ),
    );
  }

उपरोक्त कोड मेरी मदद नहीं करता है। यह पूरी स्क्रीन पर फ्यूचर लिस्ट व्यू बिल्डर का विस्तार करता है। मैं उस स्क्रॉल करने योग्य भी कैसे बनाऊं

0
Sayuru_Sadaru 11 जिंदा 2021, 16:32

1 उत्तर

सबसे बढ़िया उत्तर

इसे हल करने का एक तरीका यह होगा कि SingleChildScrollView का उपयोग किया जाए और ListView के भौतिकी को ScrollPhysics()

SingleChildScrollView(
  child: Column(
    children: [
      PlayAllButton(),
      ListView(
        //My List View Properties
        physics: ScrollPhysics(),
      ),
    ),
  ),
)
0
Bilal Naeem 11 जिंदा 2021, 16:36
यह काम कर गया लेकिन मुझे हमेशा स्क्रीन के नीचे पिन करने के लिए फ्यूचर बिल्डर फ़्लोटिंग प्लेयर विजेट को पिन करने की आवश्यकता है। इसे भी हासिल करने का कोई भी तरीका
 – 
Sayuru_Sadaru
11 जिंदा 2021, 17:22
मैंने SinglechildScrollView() को विस्तृत विजेट के अंदर लपेटकर और फिर उस विस्तृत विजेट और FloatingWidget को एक Column() के चारों ओर लपेटकर किया।
 – 
Sayuru_Sadaru
11 जिंदा 2021, 17:39