Listview cra sh Приложение Флаттер - PullRequest
0 голосов
/ 03 мая 2020

Когда я комментирую строку из виджета или приложения представления списка, она работает, но когда я раскомментирую ее, она вообще не появляется ...

Это просмотр списка для отображения списка уведомлений, который вы получать через api, api нормально работает с будущим компоновщиком, но когда я добавляю компоновщик списков, он перестает работать ...

Image without listview Image with listview

КОД


import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:mais_mob/src/shared/models/notifications_model.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:transparent_image/transparent_image.dart';

class ProfilePage extends StatefulWidget {
  @override
  _ProfilePageState createState() => _ProfilePageState();
}

class _ProfilePageState extends State<ProfilePage> {
  String _search;
  int _page = 0;
  Future<List<NotificationModel>> _getGifs() async {
    http.Response response;

    response = await http.get(
        "http://127.0.0.1:8001/api/v1/notifications/get/f331dfd0-cae4-410d-9700-b9ec72c48d7c");
    List myModels;
    myModels = (json.decode(response.body) as List)
        .map((i) => NotificationModel.fromJson(i))
        .toList();

    return myModels;
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(body: _future());
  }

  _future() {
    return FutureBuilder(
        future: _getGifs(),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            return SingleChildScrollView(
              child: Column(
                // mainAxisAlignment: MainAxisAlignment.start,
                // crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  Stack(
                    children: <Widget>[
                      Container(
                        width: double.infinity,
                        height: 280.0,
                        decoration: BoxDecoration(
                            color: Color.fromRGBO(162, 56, 0, 1),
                            borderRadius: BorderRadius.only(
                                bottomLeft: Radius.circular(30.0),
                                bottomRight: Radius.circular(30.0))),
                      ),
                      Padding(
                        padding: const EdgeInsets.only(top: 60.0, left: 20.0),
                        child: InkWell(
                            onTap: () {
                              Navigator.of(context).pop();
                            },
                            child: Icon(
                              Icons.arrow_back,
                              color: Colors.white,
                            )),
                      ),
                      Padding(
                        padding: const EdgeInsets.only(top: 150.0),
                        child: Center(
                          child: Container(
                            height: 200.0,
                            width: 310.0,
                            decoration: BoxDecoration(
                                color: Colors.white,
                                borderRadius:
                                    BorderRadius.all(Radius.circular(20.0)),
                                boxShadow: [
                                  BoxShadow(
                                      color: Colors.black12.withOpacity(0.1)),
                                ]),
                            child: Column(
                              children: <Widget>[
                                Padding(
                                  padding: const EdgeInsets.only(top: 20.0),
                                  child: Container(
                                    height: 100.0,
                                    width: 100.0,
                                    decoration: BoxDecoration(
                                        image: DecorationImage(
                                            image: AssetImage(
                                                "assets/image/profile/profile3.jpg"),
                                            fit: BoxFit.cover),
                                        color: Colors.white,
                                        borderRadius: BorderRadius.all(
                                          Radius.circular(50.0),
                                        ),
                                        boxShadow: [
                                          BoxShadow(
                                              color: Colors.black12
                                                  .withOpacity(0.2),
                                              blurRadius: 10.0,
                                              spreadRadius: 2.0)
                                        ]),
                                  ),
                                ),
                                SizedBox(
                                  height: 5.0,
                                ),
                                Text(
                                  "user['name']",
                                  style: TextStyle(
                                      color: Colors.black,
                                      fontFamily: "Sofia",
                                      fontWeight: FontWeight.w700,
                                      fontSize: 20.0),
                                ),
                                Text(
                                  "user['email']",
                                  style: TextStyle(
                                      color: Colors.black38,
                                      fontFamily: "Sofia",
                                      fontWeight: FontWeight.w300,
                                      fontSize: 16.0),
                                ),
                              ],
                            ),
                          ),
                        ),
                      )
                    ],
                  ),
                  Padding(
                    padding: const EdgeInsets.only(
                        left: 25.0, top: 40.0, bottom: 10.0),
                    child: Text(
                      "Notificações",
                      style: TextStyle(
                          fontFamily: "Sofia",
                          fontWeight: FontWeight.w700,
                          fontSize: 16.0),
                    ),
                  ),
                  // ListView.builder(
                  //     itemCount: 1,
                  //     itemBuilder: (context, index) {
                  //       return ListTile(
                  //         title: Text(snapshot.data[index].id),
                  //         subtitle: Text('x'),
                  //       );
                  //     }),
                  SizedBox(
                    height: 20.0,
                  )
                ],
              ),
            );
          } else {
            return Center(
              child: CircularProgressIndicator(),
            );
          }
        });
  }
}

Логарифмический терминал

флаттер: ══╡ ИСКЛЮЧЕНИЕ ПРИОБРЕТЕНО ПОСТАВЛЯЮЩЕЙСЯ БИБЛИОТЕКОЙ ╞════ ══════════════════════════════════════════════════ ═══ flutter: во время выполнения executeResize () было сгенерировано следующее утверждение: flutter: вертикальная область просмотра получила неограниченную высоту. флаттер: видовые окна расширяются в направлении прокрутки, чтобы заполнить их контейнер. В этом случае вертикальный флаттер: область просмотра получила неограниченное количество вертикального пространства для расширения. Эта ситуация развевается: обычно происходит, когда прокручиваемый виджет вложен в другой прокручиваемый виджет. flutter: если этот виджет всегда вложен в прокручиваемый виджет, нет необходимости использовать область просмотра, потому что flutter: для дочерних элементов всегда будет достаточно вертикального пространства. В этом случае рассмотрите возможность использования флаттера колонки: вместо этого. В противном случае рассмотрите возможность использования свойства «shrinkWrap» (или ShrinkWrappingViewport) для определения размера флаттера: высоты области просмотра до суммы высот его дочерних элементов. flutter: flutter: соответствующий виджет, вызывающий ошибки, был: flutter: файл ListView: ///Users/lucas/www1/mais_mob/lib/src/pages/dashboard/profile.dart: 149: 28 flutter: flutter: Когда происходит исключение был брошен, это был стек: flutter: # 0 RenderViewport.performResize. (package: flutter / src / render / viewport.dart: 1172: 15) flutter: # 1 RenderViewport.performResize (package: flutter / src / render / viewport.dart: 1233: 6) флаттер: # 2 RenderObject.layout (пакет : flutter / src / render / object.dart: 1703: 9) флаттер: # 3 RenderProxyBoxMixin.performLayout (пакет: flutter / src / render / proxy_box.dart: 105: 13) флаттер: # 4 RenderObject.layout (пакет: флаттер) /src/rendering/object.dart:1724:7) flutter: # 5 RenderProxyBoxMixin.performLayout (package: flutter / src / render / proxy_box.dart: 105: 13) flutter: # 6 RenderObject.layout (пакет: flutter / src /rendering/object.dart:1724:7) flutter: # 7 RenderProxyBoxMixin.performLayout (package: flutter / src / render / proxy_box.dart: 105: 13) flutter: # 8 RenderObject.layout (пакет: flutter / src / render /object.dart:1724:7) flutter: # 9 RenderProxyBoxMixin.performLayout (пакет: flutter / src / render / proxy_box.dart: 105: 13) flutter: # 10 RenderObject.layout (пакет: flutter / src / render / object .dart: 1724: 7) флаттер: # 11 RenderProxyBoxMixin.per formLayout (package: flutter / src / render / proxy_box.dart: 105: 13) flutter: # 12 RenderObject.layout (package: flutter / src / render / object.dart: 1724: 7) флаттер: # 13 RenderProxyBoxMixin.performLayout ( package: flutter / src / render / proxy_box.dart: 105: 13) flutter: # 14 RenderObject.layout (package: flutter / src /dering / object.dart: 1724: 7) флаттер: # 15 RenderFlex.performLayout (пакет: flutter / src / render / flex.dart: 744: 15) flutter: # 16 RenderObject.layout (пакет: flutter / src / render / object.dart: 1724: 7) flutter: # 17 _RenderSingleChildViewport.performLayout (пакет: flutter / src / widgets / single_child_scroll_view.dart: 497: 13) flutter: # 18 RenderObject.layout (package: flutter / src / render / object.dart: 1724: 7) flutter: # 19 RenderProxyBoxMixin.performLayout (package: flutter / src / render / proxy_box.dart: 105: 13) flutter: # 20 RenderObject.layout (пакет: flutter / src /dering / object.dart: 1724: 7) flutter: # 21 RenderProxyBoxMixin.performLayout (пакет: flutter / src / render / proxy_box.dart: 105: 13) flut ter: # 22 RenderObject.layout (пакет: flutter / src / render / object.dart: 1724: 7) flutter: # 23 RenderProxyBoxMixin.performLayout (пакет: flutter / src / render / proxy_box.dart: 105: 13) флаттер: # 24 RenderObject. макет (пакет: flutter / src / render / object.dart: 1724: 7) flutter: # 25 RenderProxyBoxMixin.performLayout (package: flutter / src / render / proxy_box.dart: 105: 13) флаттер: # 26 RenderObject.layout ( package: flutter / src / render / object.dart: 1724: 7) flutter: # 27 RenderProxyBoxMixin.performLayout (package: flutter / src / render / proxy_box.dart: 105: 13) флаттер: # 28 RenderObject.layout (пакет: flutter / src / render / object.dart: 1724: 7) flutter: # 29 RenderProxyBoxMixin.performLayout (package: flutter / src / render / proxy_box.dart: 105: 13) flutter: # 30 RenderObject.layout (пакет: flutter / src / render / object.dart: 1724: 7) flutter: # 31 MultiChildLayoutDelegate.layoutChild (package: flutter / src / render / custom_layout.dart: 163: 11) flutter: # 32 _ScaffoldLayout.performLayout (package: flutter / src / material / scaffold.dart: 477: 7) flutter: # 33 MultiChildLayoutDelegate._callPerformLayout (package: flutter / src / render / custom_layout.dart: 232: 7) flutter: # 34 RenderCustomMultiChildLayoutBox.performLayout (package: tter / src / render / custom_layout.dart: 391: 14) flutter: # 35 RenderObject._layoutWithoutResize (package: flutter / src / render / object.dart: 1584: 7) flutter: # 36 PipelineOwner.flushLayout (пакет: flutter / src / render / object.dart: 844: 18) flutter: # 37 RendererBinding.drawFrame (пакет: flutter / src / render / binding.dart: 344: 19) flutter: # 38 WidgetsBinding.drawFrame (пакет: flutter / src / widgets / binding.dart: 774: 13) flutter: # 39 RendererBinding._handlePersistentFrameCallback (package: flutter / src / render / binding.dart: 283: 5) flutter: # 40 SchedulerBinding._invokeFrameCallback (пакет: flutter / src / scheduler) binding.dart: 1102: 15) flutter: # 41 SchedulerBinding.handleDrawFrame (пакет: flutter / src / scheduler / binding.dart: 1041: 9) flutter: # 42 SchedulerBinding._handleDrawFrame (пакет: flutter / src / scheduler / binding). дротик: 957: 5) флаттер: # 46 _invoke (дартс: ui / hooks.dart: 259: 10) флаттер: # 47 _drawFrame (дарт: ui / hooks.dart: 217: 3) флаттер: (исключено 3 кадра из пакета дротик: асин c) флаттер: флаттер: че Следующий обработчик RenderObject обрабатывался при возникновении исключения: RenderViewport # 7ca7e NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE: flutter: необходимо составить flutter: creator: Viewport ← IgnorePointer- [GlobalKey # 8349f _PointerList ← слушатель ← трепетание: _GestureSemantics ← RawGestureDetector- [LabeledGlobalKey # 91c65] ← флаттер: _PointerListener ← Слушатель ← _ScrollableScope ← _ScrollSemantics- [GlobalKey # fd66b] ← Прокручиваемый ← ограничение родителя: ut флаттер: ⋯ Флаттер (0.0 <= w <= 414.0, 0.0 <= h <= Infinity) флаттер: размер: MISSING флаттер: axisDirection: нисходящий флаттер: crossAxisDirection: правый флаттер: смещение: ScrollPositionWithSingleContext # 09283 (смещение: 0.0, диапазон: ноль..ноль , viewport: null, flutter: ScrollableState, AlwaysScrollableScrollPhysics -> BouncingScrollPhysics, IdleScrollActivity # 87e45, flutter: ScrollDirection.idle) flutter: anchor: 0.0 flutter: Этот объект RenderObject имел следующий потомки крыла (показываются до глубины 5): flutter: center child: RenderSliverPadding # 68fa c NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE flutter: child: RenderSliverList # 0a754 NEEDS-LAYOUT FLEDSUT-PAINT-PAINT ══════════════════════════════════════════════════ ═════════════════════════════════════════════════ Флаттер : Было сгенерировано еще одно исключение: RenderBox не было выложено: RenderViewport # 7ca7e ТРЕБОВАНИЯ ПОТРЕБНОСТЕЙ-ПЛАНИРОВАНИЯ ПОТРЕБНОСТЕЙ-СОСТАВЛЕНИЯ-БИТЫ-ОБНОВЛЕНИЕ -BITS-UPDATE флаттер: было сгенерировано еще одно исключение: RenderBox не был выложен: RenderIgnorePointer # 26c9e relayoutBoundary = up14 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE flutter: было сгенерировано еще одно исключение: RenderBox не было выложено: RenderSemanticsAnnotations # 4973 c relayoutBoundary = up13 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE флаттер: было сгенерировано еще одно исключение: RenderBox не был выложен: RenderPointerListener relay_dary = cdd up12 Флаттер NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE: было сгенерировано еще одно исключение: RenderBox не был выложен: RenderSemanticsGestureHandler # b1e5a relayoutBoundary = up11 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE не было исключением: Реттер был исключением: выложен: RenderPointerListener # 18a2b relayoutBoundary = up10 ТРЕБОВАНИЯ ПОТРЕБНОСТЕЙ-PAINT-BITS-ОБНОВЛЕНИЯ ПОКРАШЕНИЯ: было сгенерировано еще одно исключение: не выложен RenderBox: _RenderScrollSemantics # 39c4e relayoutBoundary = up9 НЕОБХОДИМОСТЬ В ПИСЬТЕ: НЕОБХОДИМОСТЬ В РЕЖИМЕ ПОКРЫТИЯ-СОКРАЩЕНИЮ ЗАПИСЬ: НЕОБХОДИМОСТЬ -ПРОВОДНЫЕ СОБЫТИЯ Было сгенерировано еще одно исключение: RenderBox не был выложен: RenderFlex # 041d2 relayoutBoundary = up8 ТРЕБОВАНИЯ ПОЛЕЗНОМ-КРАСКИ ПОТРЕБНОСТИ-СОСТАВЛЕНИЕ-БИТОВ-ОБНОВЛЕНИЕМ: Было выброшено другое исключение: R enderBox не был размечен: _RenderSingleChildViewport # b5a7 c relayoutBoundary = up7 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE Флаттер: было сгенерировано еще одно исключение: RenderBox не был выложен: RenderIgnorePointer # 9907 c NEBED NEED Флаттер NEEDS-COMPOSITING-BITS-UPDATE: было сгенерировано еще одно исключение: RenderBox не был выложен: RenderSemanticsAnnotations # 9654a relayoutBoundary = up5 Трепетание NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE: Было сгенерировано другое исключение: RenderLizer не было # 7ea85 relayoutBoundary = up4 ТРЕБОВАНИЯ К ПОТРЕБНОСТЯМ НЕОБХОДИМЫХ-КРАСКИ-СОСТАВЛЕНИЯ-БИТОВ-ОБНОВЛЕНИЙ: было сгенерировано еще одно исключение: RenderBox не был выложен: RenderSemanticsGestureHandler # 44215 relayoutBoundary = up3 НЕОБХОДИМО-КРАСИТЬ ПОТРЕБНОСТИ В СОСТАВЛЕНИИ -BITS : RenderBox не выложен: RenderPointerListener # 11392 relayoutBoundary = up2 ТРЕБОВАНИЯ ПОДОБНО-ПОКРАШИТЬ ПОКРАСКИ-СОСТАВИТЬ-БИТЫ-ОБНОВЛЕНИЕ: было сгенерировано еще одно исключение: не выложен RenderBox: _RenderScrollSemantics # c667 c relayoutBoundary = up1 ТРЕБОВАНИЯ ПОТРЕБНОСТЕЙ-ПОКРАШЕНИЯ ПОТРЕБЛЕНИЯМ-СОСТАВЛЕНИЮ-БИТАМИ-ОБНОВЛЕНИЕМ: было сгенерировано еще одно исключение: RenderBox не выложен: _RenderSingleChildViewport # b5a7 c исключение relayoutBoundary = вверх7 : NoSuchMethodError: Получатель «видимый» был вызван нулем.

Ответы [ 3 ]

1 голос
/ 03 мая 2020

Вы получаете сообщение об ошибке, потому что вы не указали значение ListView.builder. Вы можете решить эту проблему, обернув ListView в Container и передав свойство Container a height и width.

Проверьте приведенный ниже код, он отлично работает:

Container(
      // give it your desired height here
      height: 500,
      // give it your desired height here
      width: MediaQuery.of(context).size.width,
      child: ListView.builder(
        itemCount: 1,
        itemBuilder: (context, index) {
          return ListTile(
            title: Text(snapshot.data[index].id),
            subtitle: Text('x'),
          );
        },
      ),
    );

Надеюсь, это поможет.

0 голосов
/ 03 мая 2020

Это потому, что просмотр списка принимает бесконечную высоту. Если вы добавите термоусадочную пленку, это займет достаточно высоты для отображения списка.

Возможно, вам придется использовать Flexible () и в том случае, если это не поможет

Добавить shrinkwrap = true

Вкл.

Listview.builder( .... shrinkWrap:true. ),

Если проблема все еще не решена, оберните Listview или содержащий его виджет, являющийся дочерним элементом столбца, в Flexible.

Flexible(flex:1,child :list/widget containing list)

0 голосов
/ 03 мая 2020

Вы не указали высоту, из-за которой он выдает эту ошибку. Либо оберните ее в Контейнер, как предложено bu @Random Guru, либо добавьте ее как дочерний элемент Expanded.

Expanded(
 child:ListView.Builder(...)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...