将 Flutter Row 的子级拉伸到最大*自然*高度

2024-03-17

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text(title),
    ),
    body: ListView(
      children: <Widget>[
        Row(
          mainAxisAlignment: MainAxisAlignment.end,
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            Container(
              alignment: AlignmentDirectional.center,
              color: Colors.red,
              child: Text('Lorem ipsum dolor sit amet'),
              width: 150,
            ),
            Container(
              color: Colors.blue,
              width: 4,
              height: 8,
            ),
            Container(
              width: 12,
            ),
            Container(
              color: Colors.blue,
              width: 4,
              height: 8,
            ),
            Container(
              width: 12,
            ),
          ],
        ),
        Row(
          mainAxisAlignment: MainAxisAlignment.end,
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            Container(
              alignment: AlignmentDirectional.center,
              color: Colors.red,
              child: Text('Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet'),
              width: 150,
            ),
            Container(
              color: Colors.blue,
              width: 4,
              height: 8,
            ),
            Container(
              width: 12,
            ),
            Container(
              color: Colors.blue,
              width: 4,
              height: 8,
            ),
            Container(
              width: 12,
            ),
            Container(
              color: Colors.blue,
              width: 4,
              height: 8,
            ),
            Container(
              width: 12,
            ),
          ],
        ),
      ],
    ),
  );
}

蓝色的小容器是用来模拟列的。为了完美匹配,我需要它们将自己拉伸到最左边容器(带有文本标签)的高度。我尝试使用 BoxConstraints 来实现此目的,但由于高度无限,它们会导致渲染失败。设置固定高度是不可行的,因为文本可能会改变;我确实可以设置最大高度。

能达到这样的效果吗?


您可以使用https://api.flutter.dev/flutter/widgets/IntrinsicHeight-class.html https://api.flutter.dev/flutter/widgets/IntrinsicHeight-class.html

并设置交叉对齐以在行中拉伸

ListView(
        children: <Widget>[
          IntrinsicHeight(// <---------- this one here
            child: Row(
              crossAxisAlignment: CrossAxisAlignment.stretch, // <---------- set to stretch
              mainAxisAlignment: MainAxisAlignment.end,
              mainAxisSize: MainAxisSize.min,
              children: <Widget>[
                Container(
                  alignment: AlignmentDirectional.center,
                  color: Colors.red,
                  child: Text('Lorem ipsum dolor sit amet'),
                  width: 150,
                ),
                Container(
                  color: Colors.blue,
                  width: 4,
                  height: 8,
                ),
                Container(
                  width: 12,
                ),
                Container(
                  color: Colors.blue,
                  width: 4,
                  height: 8,
                ),
                Container(
                  width: 12,
                ),
              ],
            ),
          ),// end here
          Row(
            mainAxisAlignment: MainAxisAlignment.end,
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              Container(
                alignment: AlignmentDirectional.center,
                color: Colors.red,
                child: Text('Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet'),
                width: 150,
              ),
              Container(
                color: Colors.blue,
                width: 4,
                height: 8,
              ),
              Container(
                width: 12,
              ),
              Container(
                color: Colors.blue,
                width: 4,
                height: 8,
              ),
              Container(
                width: 12,
              ),
              Container(
                color: Colors.blue,
                width: 4,
                height: 8,
              ),
              Container(
                width: 12,
              ),
            ],
          ),
        ],
      )

我故意跳过第二个Row以显示差异

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Flutter Row 的子级拉伸到最大*自然*高度 的相关文章

随机推荐

  • SQL 更改表然后修改值

    我正在处理一个 SQL 脚本 当我创建 或编辑 列然后尝试修改该新列时遇到问题 例如 BEGIN ALTER TABLE SampleTable ADD ColumnThree int END IF EXISTS SELECT FROM s
  • 如何在 C# 控制台应用程序中获取光标处的字符?

    我知道如何设置光标到控制台中的特定点设置光标位置 or 光标向左 and 光标顶部一起 那不是问题 But 我怎样才能得到该点的值 难道没有类似的东西吗控制台 光标 那么我可以得到那个位置的角色吗 也许是这样的 char c Console
  • 动态创建的 d3 图表内的 Angular ng-click 不起作用

    我正在尝试使用 Angular 指令创建 d3 图表 我设法创建它 但问题是我想在图表元素上添加一些 ng click 事件 但我不太确定应该如何完成 这是我的指令 directive circleChart function parse
  • ASP.NET 主题示例/入门工具包

    我想知道是否可以在某个地方获得 ASP NET 的入门工具包 主题示例 我不是设计师 但我需要为一个项目构建一个原型 如果我自己做的话肯定会很糟糕 你知道我在哪里可以找到它 特定于 ASP NET 吗 Check http asp net
  • 什么是分段错误?

    什么是分段错误 C和C 有什么不同吗 分段错误和悬空指针有何关系 分段错误是由于访问 不属于您 的内存而导致的一种特定错误 它是一种辅助机制 可以防止您破坏内存并引入难以调试的内存错误 每当你遇到段错误时 你就知道你在内存方面做错了 访问已
  • 使用 HTTP 代理访问 AWS API Gateway 中的标头?

    我正在使用 AWS API Gateway 它是 HTTP 代理 我需要通过 AWS API Gateway 将授权标头传递到我的终端节点 我尝试过的事情 像这样设置方法请求 Integration Request setup 这不起作用
  • 方法参考。无法对非静态方法进行静态引用

    有人可以向我解释一下吗为什么将非静态方法引用传递给方法File isHidden is ok 但将方法引用传递给非静态方法MyCass mymethod 给我一个 无法对非静态方法进行静态引用 public static void main
  • 在asp.net和sql server 2005中同时从多个线程调用存储过程

    是否可以同时从多个线程调用存储过程 我想知道这在sql server 2005中是否可行 SQl server如何处理这个问题 它会抛出错误还是会创建存储过程的多个实例并运行它 我知道我应该为此使用锁 但我想知道如果我不这样做会发生什么 谢
  • 在 python 中找到字符串列表中的确切单词列表?

    我有两个字符串列表 grids north eaSt West noRtheast soUth links north northeast north south 我想检查一下是什么grids有在links 所以我为此写了一个程序 impo
  • 内置 html 编码的 HTML 编辑器

    我现在使用 Notepad 似乎经常在这里建议进行基本的 html 和 css 编辑 唯一缺少的是粘贴到文本中的 HTML 编码方法 有没有办法在 Notepad 中执行此操作 或者我是否需要寻找其他编辑器来执行此操作 如果有什么建议的话
  • 如何让 SpannableStringBuilder 附加格式化字符串内的范围?

    背景 假设我使用 SpannableStringBuilder 将多个内容附加到其中 其中之一是我从 strings xml 文件格式化的字符串 该文件内部有一个跨度 SpannableStringBuilder stringBuilder
  • 在 HTML 页面中显示 PHP 回显消息

    您好 我是网络开发的新手 我正在尝试在 html 页面中显示来自 php 文件的回显消息 PHP 文件 其他文件
  • 如何使用 .htaccess 获得漂亮的链接[重复]

    这个问题在这里已经有答案了 可能的重复 htaccess 创建友好的 URL 需要帮助 https stackoverflow com questions 3033407 htacces to create friendly urls he
  • 如何从 Facebook 应用程序发布到 Facebook 页面?

    我想发布来自的图像数据脸书应用程序 to 脸书页面 我尝试使用流 发布 我能够发布图像 但它已被弃用 而且我也无法发帖link 使用stream publish发布的Curl请求如下 卷曲 F access token dsdsdsd F
  • 无法反序列化当前 JSON 数组(例如 [1,2,3])

    我正在尝试读取我的 JSON 结果 这是我的根对象 public class RootObject public int id get set public bool is default get set public string nam
  • 使用 Jquery 首次单击时禁用提交按钮

    我目前有一个附加到提交按钮的灯箱弹出窗口 仅在第一次单击提交按钮时显示 基本上 在有人提交表单之前 我们希望他们在点击提交按钮时看到这个弹出窗口 一切工作正常 但现在我需要将其设置为第一次单击时表单不提交 处理的位置 但是 在第一次单击后
  • 为插入语句生成uuid

    我想像这样生成uuide58ed763 928c 4155 bee9 fdbaaadc15f3当数据插入表中时 CREATE TABLE IF NOT EXISTS bin lists id uuid NOT NULL bin intege
  • 如何将 astro 组件渲染为 HTML 字符串?

    我希望能够在 Astro 中拥有一个动态页面来呈现 Astro 组件 我深入研究了文档和代码 但找不到像下面这样的函数 Astro render 理想情况下 我可以将属性传递给它 我正在寻找类似的东西react renderToString
  • Android 上有哪些角色可用?

    我想在我的 Android 应用程序中显示一些特殊的 Unicode 字符 这些字符未在 droidfonts com 上列出 但它们在模拟器和我的手机上正确显示 但想确定是否所有 Android 平台都支持它们 它记录在某处吗 谢谢 ED
  • 将 Flutter Row 的子级拉伸到最大*自然*高度

    override Widget build BuildContext context return Scaffold appBar AppBar title Text title body ListView children