Flutter 在省道/颤振中处理空值

Flutter 在省道/颤振中处理空值,flutter,dart,Flutter,Dart,我有这个用户类和一个Firestore文档,它可能包含也可能不包含photoURL或其他值。问题是,当我尝试创建一个用户时,我得到了这个异常,因为一些值是空的 我试着这样处理: var photoURL = snapshot.data['photoURL'] ??= ''; var favorites = snapshot.data['favorites'] ?? ['']; 但它似乎不起作用 有谁能解释一下分别在Dart/FLIFT中处理空值的最佳实践吗 编辑:我正在检查snapsho

我有这个用户类和一个Firestore文档,它可能包含也可能不包含photoURL或其他值。问题是,当我尝试创建一个用户时,我得到了这个异常,因为一些值是空的

我试着这样处理:

var photoURL = snapshot.data['photoURL']  ??= '';
var favorites =  snapshot.data['favorites'] ?? [''];
但它似乎不起作用

有谁能解释一下分别在Dart/FLIFT中处理空值的最佳实践吗


编辑:我正在检查snapshot.before是否存在,如果我创建的用户忽略了我知道的值为Null,它将正确创建它

编辑2:我发现当我尝试处理空列表时出现问题,如下所示:

var photoURL = snapshot.data['photoURL']  ??= '';
var favorites =  snapshot.data['favorites'] ?? [''];

当我将值转换为Json时,我似乎以错误的方式初始化了该值

我这样处理空数组

Map<String, dynamic> toJson() => {
   'favorites' : favorites ?? '',
}
Map to json()=>{
“收藏夹”:收藏夹??”,
}
何时应该:

Map<String, dynamic> toJson() => {
   'favorites' : favorites ?? [''],
}
Map to json()=>{
“收藏夹”:收藏夹???[''],
}

因此,当我尝试为字符串分配一个空数组时,它被抛出。

您是否正在执行
快照。hasData
在查找
“photoURL”
之前检查?如果(snapshot.exists)我以前尝试过,但它不起作用,那么我已经阅读了这篇文章,并将其更改为=