Flutter ListView底部溢出

时间:2018-12-30 00:02:16

标签: dart flutter

我正在尝试在还包含静态图像的容器内创建可滚动的listview。但是,列表视图似乎无法滚动,并且在我的应用程序上出现“ x像素底部溢出”的假象。

enter image description here

  static List<Widget> getClubs() {
    var myClubs = new List<Widget>();
    for (var i = 0; i < 10; i++) {
      myClubs.add(new Padding(
          padding: EdgeInsets.all(8.0),
          child: new CircleAvatar(
            backgroundImage:
                new NetworkImage("https://i.imgur.com/p2oUDLD.png"),
            backgroundColor: Colors.black,
            radius: 34.0,
          )));
    }
    return myClubs;
  }

  final leftSection = new Container(
      color: Color(0xFF212121),
      width: 100,
      child: Column(
        children: <Widget>[
          SizedBox(height: 20.0),
          new Image.asset(
            'assets/logo.png',
            alignment: Alignment.center,
          ),
          SizedBox(height: 10.0),
          new Container(
              child: new ListView(
            shrinkWrap: true,
            padding: const EdgeInsets.all(5.0),
            children: getClubs(),
          ))
        ],
      ));

5 个答案:

答案 0 :(得分:1)

我还推荐 Wrap 给遇到列表视图中容器大小错误导致溢出的问题的任何人:

                          new Container(
                             alignment: Alignment.center,
                             child: Wrap( //the magic
                               children: [
                                 new Container(),
                               ],
                             ),
                           ),

答案 1 :(得分:0)

您可以使用Expanded小部件或设置容器的高度。

答案 2 :(得分:0)

有时确定估计高度的最佳方法是使用 sizedbox

      int heightToBeReduced = 380;

      SizedBox(
        height: MediaQuery.of(context).size.height - heightToBeReduced,
        child: ListView....
      )

答案 3 :(得分:0)

我在一行中使用了 Flexible 来控制列表视图构建器的输出

定义 scollController

    final _scrollController = ScrollController();

定义 ListView 构建器

    ListView builder = ListView.builder(
    itemCount: listPerformance?.length,
    shrinkWrap: true,
    itemBuilder: (context, index) {
      return PerformanceCardWidget(performanceView: listPerformance[index]);
    });

定义一个灵活的输出列表视图构建器内容

    Row(crossAxisAlignment: CrossAxisAlignment.start, children: [
    Flexible(
          flex: 6,
          fit: FlexFit.loose,
          child: Scrollbar(
              isAlwaysShown: true,
              controller: _scrollController,
              child: SingleChildScrollView(
                  controller: _scrollController, child: builder))
          )
     ])

答案 4 :(得分:-1)

将 Column 包裹在一个 Expanded 小部件中:

Expanded(
  child: Column(
  ),
),

另一种方法是将 Column 包装在一个灵活的小部件中并指定一个弹性系数。

Flexible(
           flex: 1,
           child: Column(
            children: [
                      
                  ],
               ),
           ),