检查列表是不是为空或 null 颤动
Posted
技术标签:
【中文标题】检查列表是不是为空或 null 颤动【英文标题】:check list if it is empty or null flutter检查列表是否为空或 null 颤动 【发布时间】:2021-11-21 12:26:03 【问题描述】:我从服务器上得到这个,我需要将我的复选框设置为 true 为 null 的值,而如果我发现 [] 我不需要做任何事情
"FRI": [null], "MON": [null], "SAT": [null], "SUN": ["to": "16:27", "from": "15:27"], "THU": [null], "TUE": [null], "WED": []
我正在尝试一个
if (widget.initialValues!.every((e) => e == null))
_isClosed.trigger(true);
但它不能正常工作,因为在这两种情况下它都会返回为真
【问题讨论】:
【参考方案1】:当您尝试使用数组的每一项并将其与null
进行比较时,[null]
和[]
会得到类似的结果。相反,你应该使用.isEmpty
,因为这个方法定义了一个数组是否为空,并且在这种方法中[null] and
[]`不相等,因为第一个有一个元素,而另一个有0个元素!例如:
//an example list
const list = [ [], [null]];
for(int i=0; i<list.length; i++)
if(list[i].isEmpty)
print("empty " + i.toString());
else
print("not empty " + i.toString());
结果将是:
empty 0
not empty 1
同样,您可以使用.length
,如下所示:
const list = [ [], [null]];
for(int i=0; i<list.length; i++)
print(i.toString() + " length is " + list[i].length.toString());
这些只是示例,您也可以将它们映射到您的代码中。
【讨论】:
mm 好的,这些例子对我来说很清楚,但在我的代码中,如果我执行 if (widget.initialValues!.isEmpty) 它也会将值带为 null .. 不,你应该逐个检查元素而不是整个初始值!因为您希望能够为具有[null]
的每个项目返回true
,但相反不希望对具有[]
的项目具有此功能。所以你应该单独检查整个项目
mm 好的,我明白了,谢谢,但我尝试编写你的代码但我有错误。我用照片更新我的问题
我认为您遗漏了什么,请提供initialValue
,以便我查看。【参考方案2】:
对不起,如果我用另一个帐户回复你,但我在家用另一台电脑,我没有用户,希望你能阅读..
final List<OpeningHours?>? initialValues;
class OpeningHours
OpeningHours(
required this.open,
required this.close,
) : assert(
open.isBefore(close),
"L'apertura dev'essere per forza prima della chiusura",
);
factory OpeningHours.fromMap(Map map)
if (!map.containsKey('from') || !map.containsKey('to'))
final msg =
'La mappa $map non è valida per creare un oggetto [OpeningTime]';
throw Exception(msg);
final from = TimeOfDayExtension.parse(map['from']! as String);
final to = TimeOfDayExtension.parse(map['to']! as String);
return OpeningHours(open: from, close: to);
final TimeOfDay open;
final TimeOfDay close;
String get format => '$open.asString()-$close.asString()';
@override
String toString() => jsonEncode(toMap());
Map<String, String> toMap() =>
'from': open.asString(), 'to': close.asString();
【讨论】:
以上是关于检查列表是不是为空或 null 颤动的主要内容,如果未能解决你的问题,请参考以下文章