4 горизонтальных списка трепещут

#android #flutter #listview #dart #android-listview

#Android #трепетание #Просмотр списка #dart #android-listview

Вопрос:

Я хочу использовать 4 ListView Builder, которые прокручиваются по горизонтали в SingleChildScrollView, но даже после всех попыток страница не прокручивается по вертикали, кто-нибудь может мне помочь с этим. Пример :

 @override
 Widget build(BuildContext context) {
   return FutureBuilder(
     future: getLibrayCourse(),
     builder:  (context,snapshot){
       if(snapshot.connectionState==ConnectionState.waiting){
         return Center(child: CircularProgressIndicator());
       }
       return Container(
         padding: EdgeInsets.all(20),
         child: Column(
           mainAxisAlignment: MainAxisAlignment.start,
           crossAxisAlignment: CrossAxisAlignment.start,
           children: [
             Text("Free Video Courses",style: TextStyle(
               fontWeight: FontWeight.bold,
               fontSize: 18
             ),),
             SizedBox(height:10),
             Container(
               height: MediaQuery.of(context).size.height/4,
               child: ListView.builder(
                   scrollDirection: Axis.horizontal,
                   shrinkWrap: true,
                   itemCount: 10,
                   itemBuilder: (context, index){
                     return Card(
                       child: Text("YOYO"),
                     );
                   }),
             ),
             Text("Free Video Courses",style: TextStyle(
                 fontWeight: FontWeight.bold,
                 fontSize: 18
             ),),
             SizedBox(height:10),
             Container(
               height: MediaQuery.of(context).size.height/4,
               child: ListView.builder(
                   scrollDirection: Axis.horizontal,
                   shrinkWrap: true,
                   itemCount: 10,
                   itemBuilder: (context, index){
                     return Card(
                       child: Text("YOYO"),
                     );
                   }),
             ),
             Text("Free Video Courses",style: TextStyle(
                 fontWeight: FontWeight.bold,
                 fontSize: 18
             ),),
             SizedBox(height:10),
             Container(
               height: MediaQuery.of(context).size.height/4,
               child: ListView.builder(
                   scrollDirection: Axis.horizontal,
                   shrinkWrap: true,
                   itemCount: 10,
                   itemBuilder: (context, index){
                     return Card(
                       child: Text("YOYO"),
                     );
                   }),
             ),
             Text("Free Video Courses",style: TextStyle(
                 fontWeight: FontWeight.bold,
                 fontSize: 18
             ),),
             SizedBox(height:10),
             Container(
               height: MediaQuery.of(context).size.height/4,
               child: ListView.builder(
                   scrollDirection: Axis.horizontal,
                   shrinkWrap: true,
                   itemCount: 10,
                   itemBuilder: (context, index){
                     return Card(
                       child: Text("YOYO"),
                     );
                   }),
             ),

           ],
         ),
       );
     },
   );
 }
  

Если я использую neverscrollable в своем горизонтальном виджете, он перестанет прокручиваться, так что это проблема
Я попытался добавить высоту контейнера, используя расширенный и т. Д., Но проблема не устранена

Комментарии:

1. всегда показывайте код, в ваших списковых представлениях добавляется физика, которая никогда не прокручивается и должна работать нормально

2. Вы пробовали flutter Slivers?

3. создайте ListView(shrinkWrap: true, primary: false,)

4. Если я использую или никогда не прокручиваю физику, мой просмотр списка остановит прокрутку, и я хочу, чтобы он прокручивался.

5. @AsfarAli Нет, у меня нет

Ответ №1:

Я скопировал и использовал ваш код и просто переместил «столбец» в «SingleChildScrollView». У меня это сработало, как горизонтальная, так и вертикальная прокрутка.

 @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return Center(child: CircularProgressIndicator());
        }
        return Container(
          padding: EdgeInsets.all(20),
          child: SingleChildScrollView(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.start,
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                // your children
              ]
            ),
          ),
        );
      },
    );
  }
  

Я надеюсь, что это было полезно для вас.