How to set Custom height for Widget in GridView in Flutter?

后端 未结 4 1851
一个人的身影
一个人的身影 2020-12-04 10:48

Even after specifying the height for Container GridView, my code is producing square widgets.

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key         


        
4条回答
  •  隐瞒了意图╮
    2020-12-04 11:43

    crossAxisCount, crossAxisSpacing and screen width determine width, and childAspectRatio determines height.

    I did bit of calculation to figure out relation between them.

    var width = (screenWidth - ((_crossAxisCount - 1) * _crossAxisSpacing)) / _crossAxisCount;
    var height = width / _aspectRatio;
    

    Full example:

    double _crossAxisSpacing = 8, _mainAxisSpacing = 12, _aspectRatio = 2;
    int _crossAxisCount = 2;
    
    @override
    Widget build(BuildContext context) {
      double screenWidth = MediaQuery.of(context).size.width;
    
      var width = (screenWidth - ((_crossAxisCount - 1) * _crossAxisSpacing)) / _crossAxisCount;
      var height = width / _aspectRatio;
    
      return Scaffold(
        body: GridView.builder(
          itemCount: 10,
          itemBuilder: (context, index) => Container(color: Colors.blue[((index) % 9) * 100]),
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: _crossAxisCount,
            crossAxisSpacing: _crossAxisSpacing,
            mainAxisSpacing: _mainAxisSpacing,
            childAspectRatio: _aspectRatio,
          ),
        ),
      );
    }
    

提交回复
热议问题