【问题标题】:Flutter height of list widget is not reducing列表小部件的颤振高度没有减少
【发布时间】:2020-11-19 09:54:47
【问题描述】:

我正在尝试减少小部件容器的高度和宽度,但它没有减少。

代码

class MyWidget extends StatelessWidget {
  List datesData = [
    
      '09:00 am - 10:00 am',
      '10:00 am - 11:00 am',
      '11:00 am - 12:00 am',
      '12:00 am - 01:00 am',
      '01:00 am - 02:00 am',
      '02:00 am - 03:00 am',
      '03:00 am - 04:00 am',
      '04:00 am - 05:00 am'
    
  ];

  List<Widget> textWidgetList = List<Widget>();

  
  @override
  Widget build(BuildContext context) {
    List<Widget> textWidgetList = List<Widget>(); 
    for (int i = 0; i < 7; i++) {
      textWidgetList.add(
        Container(
          height: 100,
          width: 200,
          color: Colors.grey,
          child: Center(
            child: Text(datesData[i].toString()),
            )
        ),
      );
    }

    return   GridView(
              padding: EdgeInsets.all(0),
              shrinkWrap: true,
              gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                crossAxisCount: 2,
                mainAxisSpacing: 1,
                crossAxisSpacing: 1,
              ),
              children: textWidgetList,
            
          );
  }
}

我需要像这样显示网格视图

它是这样显示的

我尝试为容器指定高度和宽度,但它不起作用。

【问题讨论】:

    标签: flutter


    【解决方案1】:

    子项的宽度将由GridView 以及crossAxisSpacingPadding 中的列数(crossAxisCount) 确定。使用childAspectRatio 达到所需的高度。

    GridView(
      padding: EdgeInsets.all(0),
      shrinkWrap: true,
      gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
        crossAxisCount: 2,
        mainAxisSpacing: 1,
        crossAxisSpacing: 1,
        // use ratio to adjust height
        childAspectRatio: 3,
      ),
      children: textWidgetList,
    ),
    

    【讨论】:

      【解决方案2】:

      试试这个, 这是因为网格项目的大小,因此不需要设置容器高度。

       @override
        Widget build(BuildContext context) {
          var size = MediaQuery.of(context).size;
      
            final double itemHeight = (size.height - kToolbarHeight - 24) / 2;
            final double itemWidth = size.width / 2;
       
      
          List<Widget> textWidgetList = List<Widget>(); 
          for (int i = 0; i < 7; i++) {
            textWidgetList.add(
              Container(
                height: 100,
                width: 200,
                color: Colors.grey,
                child: Center(
                  child: Text(datesData[i].toString()),
                  )
              ),
            );
          }
      
          return   GridView(
                    padding: EdgeInsets.all(0),
                    shrinkWrap: true,
                   childAspectRatio: (itemWidth / itemHeight),
      
                    gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                      crossAxisCount: 2,
                      mainAxisSpacing: 1,
                      crossAxisSpacing: 1,
                    ),
                    children: textWidgetList,
                  
                );
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-03
        • 2020-11-25
        • 2014-12-07
        • 1970-01-01
        • 2020-09-24
        • 2021-05-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多