Dart 检查多个变量是否为空

问题描述 投票:0回答:5

你好,我是 dart 语言的新手,有人可以帮助我更好地编写这个条件,它有效,但它有很多重复,我觉得有更好的方法来编写它:

 if (var1 != null || var2 != null || var3 != null || var4 != null || var5 != null){ ShowMyWidget }

谢谢你。

flutter dart if-statement dart-null-safety ifnull
5个回答
4
投票
if (![var1, var2, var3, var4, var5].contains(null)){ ShowMyWidget }

2
投票

如果你真的想要,你可以这样做:

if ([var1, var2, var3, var4, var5].any((x) => x != null)) {
  ShowMyWidget();
}

0
投票

我不会检查所有这些变量,而是将它们作为小部件的可选参数。如果你这样做,只要你真正需要它们,你就可以使用其中的空安全检查它们是否为空。

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'),
      ],
    );
  }
}

请记住,您的做法并没有错。


0
投票

好的,谢谢您的回答,我会再解释一下我的目标: 我的应用程序中有一个详细信息页面,其中包含许多自定义小部件,我想检查小部件内的变量是否为空,以便显示或隐藏它。

My app screenshot

例如,我想检查其中一个预订链接是否不为空以显示标题。

if (link1 != null || link2 != null || link3 != null || link4 != null || var5 != null){ ShowMyTitle }

0
投票

当测试大量变量是否为空时,最好将它们放入数组中并使用 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);
© www.soinside.com 2019 - 2024. All rights reserved.