Flutter中如何简化返回Widget的if表达式代码?
简化Flutter Widget中带逻辑的if条件写法
你的第二种写法无法运行,是因为Dart集合字面量(比如children的[])中,if条件后需要跟表达式,而{ ... }是代码块,不属于表达式范畴,所以不能直接使用。
以下是几种可行的简化方案:
方案1:简化立即执行函数写法
可以去掉外层多余的括号,直接使用匿名函数立即执行,比原写法更简洁:
Row( children: [ if (this._check.type == CheckType.SOME) () { var a = "aaa"; var b = "bbb"; return Text(a + b); }(), ] )
方案2:提取为单独方法(推荐)
如果逻辑有一定复杂度,将其提取为Widget类的私有方法,既能简化列表内的代码,又提升可读性:
Row( children: [ if (this._check.type == CheckType.SOME) _buildSomeText(), ] ) // 同一Widget类内的私有方法 Widget _buildSomeText() { var a = "aaa"; var b = "bbb"; return Text(a + b); }
方案3:内联简化(适合简单逻辑)
如果变量可以直接内联,无需单独定义,可直接写为:
Row( children: [ if (this._check.type == CheckType.SOME) Text("aaa" + "bbb"), ] )
内容的提问来源于stack exchange,提问作者user5182503
相关产品推荐
相关产品推荐

