【问题标题】:Center content inside Flutter GridviewFlutter Gridview 中的内容居中
【发布时间】:2020-10-19 05:47:05
【问题描述】:

我一直试图在 Flutter 中将 GridView 的内容居中,但我真的没有想法,无法让它工作......

我想将 GridView 的内容居中放在白色的白色容器内,但它总是在容器/GridView 项目的顶部对齐。

代码如下:

网格视图

body: SafeArea(
    child: Container(
      width: double.infinity,
      child: GridView.count(
        // childAspectRatio: ,
        crossAxisCount: _orientationRows,
        children: <Widget>[
          Container(
            width: double.infinity,
            height: double.infinity,
            child: Center(
              child: MaterialButton(
                child: MainIconBotton(
                  imageURL: "assets/icons/video.png",
                  label: "mainIcon.mp4".tr(),
                ),
                onPressed: () {
                  Navigator.push(
                    context,
                    MaterialPageRoute(builder: (context) => ScreenVideo()),
                  );
                },
              ),
            ),
          ), 
/// (and so on)

MainIcon 小部件(= Gridview 项目的内容)

return Container(
  margin: EdgeInsets.all(7),
  padding: EdgeInsets.all(9),
  decoration: BoxDecoration(
      borderRadius: BorderRadius.circular(15), color: Colors.white),
  child: Column(
    crossAxisAlignment: CrossAxisAlignment.center,
    mainAxisAlignment: MainAxisAlignment.spaceAround,
    children: <Widget>[
      Expanded(
          flex: 2,
          child: Image.asset(
            imageURL,
          )),
      SizedBox(
        height: 5,
      ),
      Expanded(
        child: Text(
          label,
          textAlign: TextAlign.center,
          softWrap: true,
          style: TextStyle(
            fontWeight: FontWeight.bold,
            fontSize: 22,
          ),
        ),
      )
    ],
  ),
);

希望有人能提供帮助 - 非常感谢您! 克里斯

【问题讨论】:

    标签: flutter layout alignment


    【解决方案1】:

    在gridview中取一个列标签而不是中心。

    body: SafeArea(
    child: Container(
      width: double.infinity,
      child: GridView.count(
        // childAspectRatio: ,
        crossAxisCount: _orientationRows,
        children: <Widget>[
          Container(
            width: double.infinity,
            height: double.infinity,
            child: Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            mainAxisAlignment: MainAxisAlignment.center,
              children:[MaterialButton(
                child: MainIconBotton(
                  imageURL: "assets/icons/video.png",
                  label: "mainIcon.mp4".tr(),
                ),
                onPressed: () {
                  Navigator.push(
                    context,
                    MaterialPageRoute(builder: (context) => ScreenVideo()),
                  );
                },
              )]
            ),
          ),
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 2020-01-17
      • 2021-11-26
      • 1970-01-01
      • 2020-08-02
      • 2010-12-19
      • 1970-01-01
      相关资源
      最近更新 更多