【问题标题】:The method 'add' was called on null在 null 上调用了方法“add”
【发布时间】:2019-09-12 07:44:03
【问题描述】:

我尝试解析我的 firebase 集合并返回服务类型列表。 在这里,我用硬代码替换了我的 firebase 调用和解析以简化它。

 Future<List<Service>> _getServices() async {
   List<Service> _servicesList;

      Service service = new Service(
          id: 1,
          name: "name",
          location: "location",
          description: "description",
          image: "image");
      print(service.description);
      _servicesList.add(service);
  return _servicesList;
 }

函数中的打印返回正确的东西,但我得到了这个错误:

NoSuchMethodError:在 null 上调用了方法“add”。

【问题讨论】:

    标签: firebase dart flutter


    【解决方案1】:

    我在提供程序中声明了 List。我通过遵循接受的答案来纠正异常,然后使用热重载但得到相同的异常。重新启动应用程序后,我可以看到预期的变化。因此,如果您在提供者中,请记住重新启动应用程序以反映更改,然后您可以再次通过声明这样的列表来避免异常-List&lt;object&gt; myList=[]

    【讨论】:

      【解决方案2】:

      那是因为你还没有初始化_servicesList

      List<Service> _servicesList = List<Service>();
      

      编辑: List 现已弃用

      试试这个创建一个空列表。

      List<Service> _servicesList = [];
      

      创建大小为 0 的固定长度列表。

      List<Service> _serviceList = List<Service>.empty();
      

      创建一个可增长的列表

      List<Service> _serviceList = List<Service>.empty(growable: true);
      

      有关构造函数的更多详细信息,请参阅docs

      【讨论】:

      • 非常感谢,你救了我!
      • 列表();方法已被弃用。
      【解决方案3】:

      你必须这样声明。

      // use list bracket []  not use like this  => List addItem;
      
      for(var i=0; i<10; i++){
      
         addItem.add(i);
      
      }
      

      【讨论】:

        【解决方案4】:

        以下代码将修复您的错误

        1 => 列表_list = List();

        2 => 列表_list = List();

        3 => 列表_list = [];

        【讨论】:

          猜你喜欢
          • 2020-04-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-12
          • 2021-06-10
          相关资源
          最近更新 更多