你好,我是 dart 语言的新手,有人可以帮助我更好地编写这个条件,它有效,但它有很多重复,我觉得有更好的方法来编写它:
if (var1 != null || var2 != null || var3 != null || var4 != null || var5 != null){ ShowMyWidget }
谢谢你。
if (![var1, var2, var3, var4, var5].contains(null)){ ShowMyWidget }
如果你真的想要,你可以这样做:
if ([var1, var2, var3, var4, var5].any((x) => x != null)) {
ShowMyWidget();
}
我不会检查所有这些变量,而是将它们作为小部件的可选参数。如果你这样做,只要你真正需要它们,你就可以使用其中的空安全检查它们是否为空。
class TestWidget extends StatelessWidget {
final String? testPar1;
final String? testPar2;
final String? testPar3;
final String? testPar4;
const TestWidget({
this.testPar1,
this.testPar2,
this.testPar3,
this.testPar4,
Key? key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Column(
children: [
Text(testPar1 ?? 'nope'),
Text(testPar2 ?? 'nope'),
Text(testPar3 ?? 'nope'),
Text(testPar4 ?? 'nope'),
],
);
}
}
请记住,您的做法并没有错。
当测试大量变量是否为空时,最好将它们放入数组中并使用 nonNulls 属性:
if ([var1, var2, var3, var4, var5].nonNulls.isNotEmpty) {
ShowMyWidget();
}
使用 nonNulls 属性,处理您需要显示的内容也会变得很容易:
[link1, link2, link3, link4, link5].nonNulls.forEach((link) => ShowMyWidget(link));
或更短,如果 ShowMyWidget 的参数与您的链接类型相同:
[link1, link2, link3, link4, link5].nonNulls.forEach(ShowMyWidget);