createHoneycomb static method
List<FreeHexagon>
createHoneycomb({
- required Offset center,
- required double size,
- required int rings,
- double gap = 0.0,
- HexOrientation orientation = HexOrientation.flat,
创建蜂巢图案
center 中心位置
size 六边形大小
rings 环数
gap 间隙
orientation 方向
Implementation
static List<FreeHexagon> createHoneycomb({
required Offset center,
required double size,
required int rings,
double gap = 0.0,
HexOrientation orientation = HexOrientation.flat,
}) {
final hexagons = <FreeHexagon>[];
// 中心六边形
final centerHex = FreeHexagon(
id: 'center',
center: center,
size: size,
orientation: orientation,
);
hexagons.add(centerHex);
// 添加环
var currentRing = [centerHex];
for (var r = 1; r <= rings; r++) {
final newRing = <FreeHexagon>[];
for (var hex in currentRing) {
final ring = createRing(center: hex, ringSize: size, gap: gap);
newRing.addAll(ring);
}
// 去重
final uniqueRing = <String, FreeHexagon>{};
for (var hex in newRing) {
final key =
'${hex.center.dx.toStringAsFixed(1)}_${hex.center.dy.toStringAsFixed(1)}';
uniqueRing[key] = hex;
}
hexagons.addAll(uniqueRing.values);
currentRing = uniqueRing.values.toList();
}
return hexagons;
}