Вложенный ListView не отображается — трепетание

#flutter #dart

#флаттер #dart

Вопрос:

У меня есть два списка. Один из них является оболочкой всех виджетов в представлении, второй — его дочерний элемент. Вот код:

 ListView(
                    scrollDirection: Axis.vertical,
                    physics: AlwaysScrollableScrollPhysics(),
                    children: [
                      Container(
                         ................
                          ),
                      Container(
                         ................
                      ),
                      ListView.builder(
                        itemBuilder: (context, index) {
                          return Expanded(child: Column(children: [
                            Divider(
                              color: Colors.black12,
                              height: 20,
                              thickness: 1,
                              indent: 20,
                              endIndent: 0,
                            ),
                            Row(children: [
                              Image.network(
                                  "http://openweathermap.org/img/wn/10d@2x.png"),
                              Text(Utils.days[index   1],
                                  style: GoogleFonts.roboto(
                                      fontSize: 16, color: Colors.white))
                            ]),
                          ]));
                        },
                        itemCount: 5,
                        scrollDirection: Axis.vertical,
                      )
                    ]);
 

Видны два контейнера. Я не вижу элементы во втором представлении списка. В консоли нет никакой ошибки. Я понятия не имею, почему это происходит.

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

1. не вкладывайте два или более ListView s — вместо этого используйте CustomScrollView

2. добавить shrinkWrap: true ниже второй список

Ответ №1:

Я исправил это, добавив shrinkWrap: true и physics: NeverScrollableScrollPhysics() во вложенный ListView

Ответ №2:

Я надеюсь, что этот код будет работать для вас.

       return Scaffold(
      body: Container(
          child: SingleChildScrollView(
        child: Column(mainAxisSize: MainAxisSize.min,
            // scrollDirection: Axis.vertical,
            // physics: AlwaysScrollableScrollPhysics(),
            children: [
              Container(
                child: Text("one"),
              ),
              Container(
                child: Text("two"),
              ),
              Container(
                height: MediaQuery.of(context).size.height / 2,
                child: ListView.builder(
                  itemBuilder: (context, index) {
                    return Column(children: [
                      Divider(
                        color: Colors.black12,
                        height: 20,
                        thickness: 1,
                        indent: 20,
                        endIndent: 0,
                      ),
                      Row(children: [
                        Image.network(
                            "http://openweathermap.org/img/wn/10d@2x.png"),
                        Text(index.toString(),
                            style: GoogleFonts.roboto(
                                fontSize: 16, color: Colors.white))
                      ]),
                    ]);
                  },
                  itemCount: 5,
                  scrollDirection: Axis.vertical,
                ),
              )
            ]),
      )),
    );