我正在用Fighter编写数独应用程序.目前,电网部分.

理想情况下,我希望实现这样的网格:

Sudoku Grid from Wikipedia

这一款有:

  1. 正方形网格和单元格.
  2. 占据整个细胞的线索.
  3. 周围有一些边界的细胞.
  4. 一些边框比另一些边框更大(在3x3正方形的边缘).

但最重要的是,栅格应为be adaptive(当空间不足时调整大小). 我所有的try (大约3天的try )都失败了,因为它们不适应……

推荐答案

try 了一下--最后用了flutter_layout_grid

import 'dart:math';

import 'package:flutter/material.dart';
import 'package:flutter_layout_grid/flutter_layout_grid.dart';

Widget sudokuGrid(BuildContext context) {
  return Center(
    // Aspect ratio will keep the cells as squares
    child: AspectRatio(
      aspectRatio: 1,
      child: LayoutGrid(
        // Set the cols and rows to be equal sizes
        columnSizes: List<TrackSize>.generate(9, (index) => 1.fr),
        rowSizes: List<TrackSize>.generate(9, (index) => 1.fr),
        children: [
          for (var j = 0; j < 9; j++)
            for (var i = 0; i < 9; i++)
              Container(
                alignment: Alignment.center,
                decoration: BoxDecoration(
                  color: Colors.white,
                  border: Border(
                    // Conditionally set the border thickness
                    top: BorderSide(
                        color: Colors.black,
                        width: j > 0 && j % 3 == 0 ? 5 : 1),
                    right: BorderSide(
                        color: Colors.black,
                        width: i > 0 && i % 3 == 2 ? 5 : 1),
                    bottom: BorderSide(
                        color: Colors.black,
                        width: j < 8 && j % 3 == 2 ? 5 : 1),
                    left: BorderSide(
                        color: Colors.black,
                        width: i < 8 && i % 3 == 0 ? 5 : 1),
                  ),
                ),
                // Substitute text with text entry or
                // wrap with a gesture detector to make interactive
                child: Text(
                  "0",
                  textAlign: TextAlign.center,
                  style: TextStyle(
                    color: Colors.black,
                    // Responsive text size
                    fontSize: min(MediaQuery.of(context).size.width,
                            MediaQuery.of(context).size.height) /
                        25,
                  ),
                ),
              ),
        ],
      ),
    ),
  );
}

Flutter相关问答推荐

Riverpod生成器和生成util类

如何刷新future 的构建器时,没有OBS变量的内部在Ffltter?

try 在Flutter应用程序中传递变量到FirebaseFirestore Where子句

在Flutter中,有没有一种方法可以点击页面到后面的页面?

如何创建一个按钮来在Ffltter Webview中转到上一页?

将侧边菜单和底部导航栏放在同一Flutter 应用程序中

如何在 Flutter 中创建厚度沿着容器逐渐减小的边框

创建仅定义导出的文件是否有意义?

将自定义容器附加到屏幕底部

ScaffoldMessenger 在等待键下方不起作用

在 Flutter 中使用条件语句设置 ImageProvider Object 类型的背景图像

没有固定宽度的小部件可以约束文本小部件吗?

Dart:未捕获错误:RangeError(索引):索引超出范围:索引应小于 7:7

使用 Play Integrity API 时,Firebase 电话身份验证问题缺少客户端标识符错误

小部件堆栈未显示顶层

如何将 chrome web 模拟器添加到 vs code

如何使用 Rrect 或类似工具在 flutter 中绘制梯形线?

如何根据应用程序主题(深色和浅色)更改谷歌 map 的主题?

单元测试中如何比较NaN和NaN是否相等

如何在 ListView.builder 中扩展文本?