代码之家  ›  专栏  ›  技术社区  ›  Robin Dijkhof

flutter firebase实时数据库如何更新多个孩子?

  •  0
  • Robin Dijkhof  · 技术社区  · 6 年前

    我正在更新flutter中的多个孩子:更新作业中的所有订单。在Android中,我可以这样做:

    public void setJobOrder(final ArrayList<Job> jobs) {
      Map map = new HashMap();
      for (int i = 0; i < jobs.size(); i++) {
        map.put(jobs.get(i).id + "/order", i + 1);
      }
      jobsRef.updateChildren(map);
    }
    

    在颤振中,我想到了这样的事情:

    Future setJobOrder(List<Job> jobs) async{
      Map map = {};
    
      for(int i = 0; i<jobs.length; i++){
        map[jobs[i].id] = {'order': i};
      }
    
      return (await _getJobsRef()).update(map);
    }
    

    但是,这给了我以下错误:

    E/flutter ( 8693): type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'Map<String, dynamic>'
    

    我的结构如下:

    enter image description here

    2 回复  |  直到 6 年前
        1
  •  0
  •   George Rappel AdminOfThings    6 年前

    而不是 Map map = {} 在变量声明中,尝试使用:

    Map<String, dynamic> map = {};
    
        2
  •  0
  •   Robin Dijkhof    6 年前

    这工作:

    Future setJobOrder(List<Job> jobs) async{
      Map map = {};
      for(int i = 0; i<jobs.length; i++){
        map[jobs[i].id + '/order'] = i;
      }
    
      return (await _getJobsRef()).update(map.cast<String, dynamic>());
    }