我正在创建一个洗牌游戏,为此,我设置了3个级别的网格,

我拿了一个300x300的固定大小的容器,我不想改变它的大小,

在这里,我想要把所有的网格按钮正确地放在一个网格内,但我在网格视图的顶部获得了空间,因此,按钮显示得不合适.

以下是我的代码

final kdecoration = BoxDecoration(
    border: Border.all(color: Colors.yellow, width: 1),
    borderRadius: BorderRadius.circular(5),
    color: Colors.red);

class HomeScreen extends StatefulWidget {
  const HomeScreen({Key? key}) : super(key: key);

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  double w = 300;
  double h = 300;
  int gridvalue = 3;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Center(
              child: Text(
            '$gridvalue x $gridvalue',
            style: TextStyle(fontSize: 30, color: Colors.blue),
          )),
          SizedBox(
            height: 20,
          ),
          Container(
              color: Colors.blue,
              height: h,
              width: w,
              child: GridView.builder(
                  physics: NeverScrollableScrollPhysics(),
                  itemCount: gridvalue * gridvalue,
                  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                    mainAxisSpacing: 0,
                    crossAxisSpacing: 0,
                    crossAxisCount: gridvalue,
                  ),
                  itemBuilder: (context, index) {
                    return Container(
                      decoration: kdecoration,
                      child: Center(
                          child: Text(
                        (index + 1).toString(),
                        style: TextStyle(fontSize: 20, color: Colors.white),
                      )),
                      //color: Colors.green,
                    );
                  })),
          SizedBox(
            height: 20,
          ),
          Container(
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                ElevatedButton(
                    onPressed: () {
                      setState(() {
                        gridvalue = 3;
                      });
                    },
                    child: Text('3x3')),
                ElevatedButton(
                    onPressed: () {
                      setState(() {
                        gridvalue = 4;
                      });
                    },
                    child: Text('4x4')),
                ElevatedButton(
                    onPressed: () {
                      setState(() {
                        gridvalue = 5;
                      });
                    },
                    child: Text('5x5')),
              ],
            ),
          )
        ],
      ),
    );
  }
}

placed output image as well...enter image description here

推荐答案

enter image description here

您可以在Flutter 判断器中看到,默认情况下,GridView具有填充(0、24、0、0).您可以通过在`GridView‘中添加EdgeInsets.zero来删除它.

GridView.builder(
  padding: EdgeInsets.zero,
  ...
)

Flutter相关问答推荐

如何在Flutter的easy_translation包中链接嵌套的链接翻译?

Flutter -如何将导航轨道标签靠左对齐?

Flutter中的编译时间常量方法

从Firestore流式传输单个文档还是整个集合更好?

Flutter 构建 Web 分段故障 - 无法启动事件处理程序线程

如何在 Flutter 中创建具有渐变背景色的自定义 Snackbar?

如何在 Flutter 中以背景 colored颜色 制作圆圈的一部分

如何将 Flutter 项目迁移到具有多个插件的 Gradle 8?

Flutter:在 pubspec.yaml 中找不到assets资源

如何动态获取任何小部件的像素?

Flutter 使用扩展的 TextField 定位小部件

在我使用 flutter_riverpod stateprovider 重新保存代码之前,UI 主题状态不会更新

Flutter Firebase 升级后出现问题? ARC 语义问题 (Xcode): Select 器appleCredentialWithIDToken:rawNonce:fullName:没有已知的类方法

Flutter 如何使用 ClipPath 编辑容器的顶部?

如何获取 android 和 Ios (flutter) 的 CircularProgress 指示器?

在 Flutter 中,您什么时候应该更喜欢Widget继承而不是组合?

Flutter 用户过滤器

http响应在Flutter 中返回307

参数类型Future>不能分配给参数类型Future>?

单击列表视图导航到 Flutter 中的另一个页面