当前位置: 首页 > 知识库问答 >
问题:

Flutter,访问父容器小部件的填充值

孔建柏
2023-03-14
    Container(
      padding: EdgeInsets.all(10),
      alignment: Alignment(0, 0),
      child: SizedBox(
        width: min(MediaQuery.of(context).size.width,
                MediaQuery.of(context).size.height) -
            20,
        height: min(MediaQuery.of(context).size.width,
                MediaQuery.of(context).size.height) -
            20,
        child: GridView.count(
          padding: EdgeInsets.all(0),
          crossAxisCount: sqrt(tiles.length).round(),
          mainAxisSpacing: 5,
          crossAxisSpacing: 5,
          children: tiles,
          shrinkWrap: true,
        ),
      ),
    ),

我知道我可以在前面将edge inset存储为变量,并在这两个地方都使用它,但当我试图学习Flutter时,我更好奇是否有一种方法可以读取父小部件的值/属性,以便它们的子部件可以动态引用它们。

共有1个答案

夏侯兴学
2023-03-14

如果为某个小部件提供全局密钥

final_key=GlobalKey();

Table(
   key: _key,
   children: _getTableRows(),
);

然后可以像这样计算小部件的大小:

void _getSize(_) {
final RenderBox _boardRender = _key.currentContext.findRenderObject();
final boardSize = MediaQuery.of(_key.currentContext).size;
final boardOffset = _boardRender.localToGlobal(Offset.zero);

//print('$boardSize:$boardOffset:$cellSize');
 类似资料:
  • 我试图添加一些填充的顶部和底部的一些文字和图标在一个卡片小部件。我发现flutter为容器提供了一种简单的方法,但似乎找不到其他小部件的方法(除了将它们包装在容器中)。这是我目前得到的代码: 因此,在我的子列中,我想在顶部和底部添加一些填充,而不必插入新的容器。这可能吗?

  • 我正在使用作为覆盖层。它应该和它的父容器一样宽和一样高。然而,由于某种奇怪的原因,它不是垂直填充其父级的(而是水平填充)。下面是相关的XML: 使用上面的代码,覆盖层也不可见(其高度为)。当我在内部放置时,它会展开以适应。简而言之,它的行为就好像它的高度被设置为。 我如何强制它装满它的容器,同时让它空着?

  • 外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。 当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。 使用 docker container ls 可以看到,本地主机的 49155 被映射到了容器的 5000 端口。此时访问本机的 49155 端口即可访问容器内 web 应

  • 问题内容: 我有一个容器宽度为100%的页面,因此它是屏幕的整个宽度,我在网格结构中有几个DIV,它们都具有浮动:保留在它们上,没有设置宽度,仅留有10px的空白。 是否有一种使用CSS或jQuery的方法来使div填充整个宽度并调整其自身以适应间隙,因此边距会根据屏幕尺寸而变化。 问题答案: 在此线程中查看三十点的答案,以获得不带JavaScript的纯CSS / HTML解决方案,该解决方案可

  • 我正在尝试从Flutter中的父部件传递堆栈的高度,但我无法做到。请帮助我找到解决方案,我将把我的代码作为参考。 父小工具 子部件 如何将堆栈的高度传递给SVGPicture。