Flutter 将dart中地图的地图更新到firestore

Flutter 将dart中地图的地图更新到firestore,flutter,dart,google-cloud-firestore,Flutter,Dart,Google Cloud Firestore,用户可以保存他的姓名和照片。用户可以跳过以上载个人资料照片。因此,我已经在数据库中存储了用户的数据。所以,我不想将null设置为photo.url。如何为此创建地图 Future<void> updateUser({String name, String uid, String url}) { Map<String, dynamic> _map = <String, dynamic>{ 'info': {

用户可以保存他的姓名和照片。用户可以跳过以上载个人资料照片。因此,我已经在数据库中存储了用户的数据。所以,我不想将null设置为
photo.url
。如何为此创建地图

Future<void> updateUser({String name, String uid, String url}) {

        Map<String, dynamic> _map = <String, dynamic>{
          'info': {
            'name': name
          },
        };
    
        if (url != null) {
          // if user upload profile photo I want to add url to inside `info.photo`

          // got an error when try like this
          // _map['info']['photo'] = {'url': url};
    
         // this way is replace info, it's mean 'name' key is removed
         //  _map['info'] = {
         //    'photo': {'url': url}
         //  };
        }
    
        return _db.collection('users').doc(uid).set(_map, SetOptions(merge: true));
}您可以尝试以下方法:

 Map<String, dynamic> child = <String, dynamic>{'name': 'name'};
 Map<String, dynamic> _map = <String, dynamic>{"info": child};
 Map<String, dynamic> info = _map["info"];

 info.update(
   'photo',
   (value) => null,
   ifAbsent: () => {'url': 'new url'},
 );
 _map.update('info', (value) => info);
 print(_map);
Map child={'name':'name'};
映射(Map={“info”:child};
地图信息=_地图[“信息”];
信息更新(
"照片",,
(值)=>null,
ifAbsent:()=>{'url':'new url'},
);
_map.update('info',(value)=>info);
打印(地图);
我使用了一个子映射来强制类型转换。

您可以尝试以下方法:

 Map<String, dynamic> child = <String, dynamic>{'name': 'name'};
 Map<String, dynamic> _map = <String, dynamic>{"info": child};
 Map<String, dynamic> info = _map["info"];

 info.update(
   'photo',
   (value) => null,
   ifAbsent: () => {'url': 'new url'},
 );
 _map.update('info', (value) => info);
 print(_map);
Map child={'name':'name'};
映射(Map={“info”:child};
地图信息=_地图[“信息”];
信息更新(
"照片",,
(值)=>null,
ifAbsent:()=>{'url':'new url'},
);
_map.update('info',(value)=>info);
打印(地图);

我使用了一个子映射来强制类型转换。

如果使用
if

 Map<String, dynamic> _map = <String, dynamic>{
          'info': {
            'name': name,
            if (url != null) 'photo' : {'url': url}
          },
        };
Map\u Map={
“信息”:{
“名称”:名称,
如果(url!=null)'photo':{'url':url}
},
};

如果

 Map<String, dynamic> _map = <String, dynamic>{
          'info': {
            'name': name,
            if (url != null) 'photo' : {'url': url}
          },
        };
Map\u Map={
“信息”:{
“名称”:名称,
如果(url!=null)'photo':{'url':url}
},
};

错误的兄弟。请检查我的问题。我想在另一张地图(
photo
)中添加
url
)是的,我看到了你所做的,但你明白了。干得好。对不起,错了。我想在
info
映射中添加
photo
映射您的结果如下
{name:name,photo:{url:newurl}
。我想要
{'info':{'name':name,'photo':{'url':url}}
是的。它正在工作。但是我实际的
地图
非常复杂。有这么多条件。有没有其他方法呢?错误的兄弟。请检查我的问题。我想在另一个地图(
照片
)中添加
url
)是的,我看到了你所做的,但是你明白了。做得好。对不起,这是错的。我想在
信息中添加
照片
地图你的结果是这样的
{name:name,photo:{url:newurl}
。我想
{info':{name':name,'photo':{url:url}}
是的。它正在工作。但我认为实际的
地图非常复杂。有这么多的条件。还有其他方法吗?