【问题标题】:type 'String' is not a subtype of type 'Timestamp'“字符串”类型不是“时间戳”类型的子类型
【发布时间】:2021-11-26 16:12:35
【问题描述】:

我对 Flutter 比较陌生。我一直在处理以前开发人员编写的颤振代码库。因此,每当我导航到应用程序中的历史记录页面时,它都会抛出异常,说明类型“字符串”不是“时间戳”类型的子类型。我不知道代码有什么问题。任何帮助将不胜感激。我已经被困了几天了。 createddate 的类型是字符串。

            docs.documents.forEach((i) {
              Timestamp date = i.data['createddate'];
              DateTime dates = date.toDate();
              DateFormat inputFormat = DateFormat("yyyy-MM-dd HH:mm:ss");
              DateTime parsedDate = inputFormat.parse(dates.toString());
              print(approvestatus + 'dada');
              if ((filterFrom
                          .subtract(Duration(hours: 24))
                          .isBefore(parsedDate) &&
                      filterTo
                          .add(Duration(hours: 24))
                          .isAfter(parsedDate)) &&
                  (i.data['shopkeeperid'].toString() == uid) &&
                  (i.data['productid']
                          .toString()
                          .toLowerCase()
                          .contains(searchvalue.toString()) ||
                      i.data['productname']
                          .toString()
                          .toLowerCase()
                          .contains(searchvalue.toString()) ||
                      i.data['productbrand']
                          .toString()
                          .toLowerCase()
                          .contains(searchvalue.toString()) ||
                      i.data['availablequantity']
                          .toString()
                          .toLowerCase()
                          .contains(searchvalue.toString()) ||
                      searchvalue == "")) {
                childrenWidgets.add(productView(i, context));
              }
            });

【问题讨论】:

  • 你有什么不明白的?即使某些字符串是格式化的日期,您也不能这样做 Timestamp date = "some string" ...
  • 正确的@Selvin 我应该如何解决这个问题?
  • 显然你不需要date 也不需要dates 并直接解析它...

标签: android ios flutter dart web


【解决方案1】:

您的代码中有一个 timeStamp 变量,您正试图将一个字符串传递给它。 我无法清楚地理解这段代码。但是您必须在每一行上放置调试点。 例如第一行

      Timestamp date = i.data['createddate'];

如果data['createddate']; 是一个字符串,则可能会出现此错误 放置调试点,您可以看到每个值,您还可以了解您的代码从哪个点不会继续前进

【讨论】:

  • 感谢您的回复。我确实放了一个调试器。在此行之后 Timestamp date = i.data['createddate'];它抛出异常。 createddate 的类型是字符串。它被分配给时间戳类型。
  • @Aniket 所以从您的代码中我认为您应该将数据中的字符串更改为时间戳,这将有助于stackoverflow.com/questions/50632217/… 或者您可能只想将该时间戳更改为字符串
  • 感谢伙伴,该链接非常有用。真的很感激。
猜你喜欢
  • 2020-07-02
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 2019-08-05
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多