Flutter中如何在单个if条件下返回两个Widget?
解决Flutter中单个条件判断返回多个Widget的问题
可以通过以下两种方式实现单个if判断返回多个Widget:
方法1:使用集合展开运算符(推荐)
利用Dart的集合展开运算符...,在if块中返回一个包含两个Widget的列表,再将其展开到原Row的children中,效果和原两个if判断完全一致:
Row( children: [ ... // 其他原有Widget if (session.server.autoVenta) ...[ SizedBox( width: size.width * 0.16, child: const TextPrimary( text: "N° Doc:", ), ), SizedBox( width: size.width * 0.24, child: Text(order.documento), ), ], ] )
方法2:用容器Widget包裹多个Widget
如果这两个Widget是固定组合,可以用Row将它们包裹成单个Widget,再在if判断中返回这个包裹后的Widget:
Row( children: [ ... // 其他原有Widget if (session.server.autoVenta) Row( children: [ SizedBox( width: size.width * 0.16, child: const TextPrimary( text: "N° Doc:", ), ), SizedBox( width: size.width * 0.24, child: Text(order.documento), ), ], ), ] )
两种方法对比:方法1更贴合原代码的布局逻辑,相当于直接向原Row添加两个独立的子Widget;方法2会多一层Row嵌套,适合需要对这两个Widget统一设置布局属性的场景。
内容的提问来源于stack exchange,提问作者dylanroman03
相关产品推荐
相关产品推荐

