草庐IT

dart - 与最高 child 一样高并允许其他 child CrossAxisAlignment.stretch 的行

coder 2023-07-24 原文

我想在 Flutter 中创建一个 Row,它的最高子元素的高度最大。然后其他较小的 child 应该在可用空间中拉伸(stretch)。

我尝试在 Row 上使用 CrossAxisAlignment.stretchMainAxisSize.min:

    Row(
      crossAxisAlignment: CrossAxisAlignment.stretch,
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      mainAxisSize: MainAxisSize.min,
      children: [
        Container(child: Text("1")),
        Container(child: SizedBox(height: 200))
      ]);

在这种情况下,带有 TextContainer 应该拉伸(stretch)到与带有 SizedBoxContainer 一样高.

但是这会导致运行时异常:

flutter: The following RenderObject was being processed when the exception was fired:
flutter:   RenderFlex#93aae relayoutBoundary=up5 NEEDS-LAYOUT NEEDS-PAINT
flutter:   creator: Row ← Column ← Column ← Padding ← Expanded ← Row ← Builder ← MediaQuery ←
flutter:   LayoutId-[<_ScaffoldSlot.body>] ← CustomMultiChildLayout ← AnimatedBuilder ← DefaultTextStyle ← ⋯
flutter:   parentData: offset=Offset(0.0, 0.0); flex=null; fit=null (can use size)
flutter:   constraints: BoxConstraints(0.0<=w<=174.3, 0.0<=h<=Infinity)
flutter:   size: MISSING
flutter:   direction: horizontal
flutter:   mainAxisAlignment: spaceBetween
flutter:   mainAxisSize: min
flutter:   crossAxisAlignment: stretch
flutter:   textDirection: ltr
flutter:   verticalDirection: down
flutter: This RenderObject had the following descendants (showing up to depth 5):
flutter:   RenderDecoratedBox#2c670 NEEDS-LAYOUT NEEDS-PAINT
flutter:     RenderPadding#94471 NEEDS-LAYOUT NEEDS-PAINT
flutter:       RenderPositionedBox#38d50 NEEDS-LAYOUT NEEDS-PAINT
flutter:         RenderFlex#c2d46 NEEDS-LAYOUT NEEDS-PAINT
flutter:           RenderPadding#e6dc8 NEEDS-LAYOUT NEEDS-PAINT
flutter:           RenderParagraph#d7b38 NEEDS-LAYOUT NEEDS-PAINT
flutter:   RenderConstrainedBox#a7e45 NEEDS-LAYOUT NEEDS-PAINT
flutter:   RenderDecoratedBox#31487 NEEDS-LAYOUT NEEDS-PAINT
flutter:     RenderPadding#0cf57 NEEDS-LAYOUT NEEDS-PAINT
flutter:       RenderPositionedBox#df396 NEEDS-LAYOUT NEEDS-PAINT
flutter:         RenderParagraph#868d2 NEEDS-LAYOUT NEEDS-PAINT

如果我是对的,那么这个异常告诉我 Row 正试图扩展到无穷大,因为它不受约束。 在 SizedBox(height: x) 小部件中包装 Row 时,我没有遇到异常,但这不是我想要实现的。

是否有一些小部件或技巧可以帮助我解决问题?

最佳答案

考虑显示一个未知大小不同的红色和黄色容器的行:

Row(
  children: <Widget>[
    red,
    yellow,
  ],
),

要达到预期的结果,您需要做两件事:

  • CrossAxisAlignment.strectch。这要求所有 child 采用相同的高度 - 并使行垂直填充其父级
  • Row 包装到 IntrinsicHeight 小部件中。此小部件强制其子项采用尽可能少的高度。

最终结果是:

IntrinsicHeight(
  child: Row(
    crossAxisAlignment: CrossAxisAlignment.stretch,
    children: <Widget>[
      red,
      yellow,
    ],
  ),
)

关于dart - 与最高 child 一样高并允许其他 child CrossAxisAlignment.stretch 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55194872/

有关dart - 与最高 child 一样高并允许其他 child CrossAxisAlignment.stretch 的行的更多相关文章

  1. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  2. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  3. ruby-on-rails - RSpec:避免使用允许接收的任何实例 - 2

    我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_

  4. ruby - 调用其他方法的 TDD 方法的正确方法 - 2

    我需要一些关于TDD概念的帮助。假设我有以下代码defexecute(command)casecommandwhen"c"create_new_characterwhen"i"display_inventoryendenddefcreate_new_character#dostufftocreatenewcharacterenddefdisplay_inventory#dostufftodisplayinventoryend现在我不确定要为什么编写单元测试。如果我为execute方法编写单元测试,那不是几乎涵盖了我对create_new_character和display_invent

  5. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  6. ruby - 允许主机名包含下划线的 URI.parse 的替代方法 - 2

    我正在使用DMOZ的listofurltopics,其中包含一些具有包含下划线的主机名的url。例如:608609TheOuterHeaven610InformationandimagegalleryofMcFarlane'sactionfiguresforTrigun,Akira,TenchiMuyoandotherJapaneseSci-Fianimations.611Top/Arts/Animation/Anime/Collectibles/Models_and_Figures/Action_Figures612虽然此url可以在网络浏览器中使用(或者至少在我的浏览器中可以使用:

  7. ruby - 为什么允许在 Ruby 类之外定义全局方法? - 2

    我读过这个:Let’sstartwithasimpleRubyprogram.We’llwriteamethodthatreturnsacheery,personalizedgreeting.defsay_goodnight(name)result="Goodnight,"+namereturnresultend我的理解是,方法是定义在类中的函数或子程序,可以关联到类(类方法)或对象(实例方法)。那么,如果它不是在类中定义的,怎么可能是方法呢? 最佳答案 当你在Ruby中以这种方式在全局范围内定义一个函数时,它在技术上变成了Obje

  8. ruby-on-rails - 是否可以让 ActiveRecord 为使用 :joins option? 加载的行创建对象 - 2

    我需要做这样的事情classUser'User',:foreign_key=>'abuser_id'belongs_to:gameendclassGame['JOINabuse_reportsONusers.id=abuse_reports.abuser_id','JOINgamesONgames.id=abuse_reports.game_id'],:group=>'users.id',:select=>'users.*,count(distinctgames.id)ASgame_count,count(abuse_reports.id)asabuse_report_count',:

  9. ruby - 可以像在 C# 中使用#region 一样在 Ruby 中使用 begin/end 吗? - 2

    我最近从C#转向了Ruby,我发现自己无法制作可折叠的标记代码区域。我只是想到做这种事情应该没问题:classExamplebegin#agroupofmethodsdefmethod1..enddefmethod2..endenddefmethod3..endend...但是这样做真的可以吗?method1和method2最终与method3是同一种东西吗?还是有一些我还没有见过的用于执行此操作的Ruby惯用语? 最佳答案 正如其他人所说,这不会改变方法定义。但是,如果要标记方法组,为什么不使用Ruby语义来标记它们呢?您可以使用

  10. ruby-on-rails - Ruby on Rails,在更新其他列值时更改列值 - 2

    我在Rails模型中有两列相互关联:Article.bodyArticle.body_updated_on每次Article.body更新时,我想将Article.body_updated_on更改为Time.now。如果任何其他字段已更新,则无需进行任何操作。 最佳答案 只需在将回调保存到您的文章模型之前添加classArticle 关于ruby-on-rails-RubyonRails,在更新其他列值时更改列值,我们在StackOverflow上找到一个类似的问题:

随机推荐