You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Hexagon插件使用时修改背景空白区域颜色的方法咨询

Flutter Hexagon插件使用时修改背景空白区域颜色的方法咨询

嗨,当然可以修改这个空白区域的颜色啦!你看到的白色其实是Hexagon网格所在父容器的背景色,插件本身并没有固定这个颜色,咱们只需要给网格套个带背景色的容器就行,有两种简单的实现方式:

方法一:在使用HexMediaGrid的地方添加背景容器

直接给HexMediaGrid外面包裹一个Container,设置你想要的背景颜色就行,这样可以灵活控制不同页面的背景色:

const SizedBox(height: 10),
// 新增带背景色的Container
Container(
  color: Colors.deepPurple, // 替换成你想要的颜色
  child: const HexMediaGrid(),
),
const SizedBox(height: 30),

方法二:在HexMediaGrid组件内部设置统一背景

如果希望所有使用HexMediaGrid的地方都用同一个背景色,可以直接在组件的build方法里给网格套上背景容器:
修改hex_media_grid.dart里的build方法:

@override
Widget build(BuildContext context) {
  final List<String> media = List.generate(
    20,
    (index) => 'assets/images/c${(index % 4) + 1}.jpg',
  )..shuffle(Random());
  
  // 用带背景色的Container包裹整个Hexagon网格
  return Container(
    color: Colors.deepPurple, // 设置统一背景色
    padding: const EdgeInsets.symmetric(horizontal: 12.0),
    child: HexagonOffsetGrid.oddFlat(
      columns: 4,
      rows: 5,
      buildTile: (col, row) {
        int index = row * 4 + col;
        if (index >= media.length) {
          return HexagonWidgetBuilder(child: SizedBox.shrink());
        }
        return HexagonWidgetBuilder(child: HexTile(imagePath: media[index]));
      },
    ),
  );
}

原理其实很简单:HexagonOffsetGrid本身是透明的,所以六边形之间的空白区域会显示它父级容器的背景色,之前显示白色是因为你的页面或父容器默认背景是白色,只要给网格的直接父容器设置背景色,就能替换掉这个白色啦~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 12:22:57