firebase - Dart/Flutter//“方法 'toDate' 在 null 上被调用。接收者:null 尝试调用:toDate()”
问题描述
我正在尝试使用 toDate() 将时间戳从 firebase 转换为 DateTime。
return StreamBuilder<List<Contact>>(
stream:DBService.instance.getUsersInDB(_searchText) ,
builder: (context, _snapshot){
var _usersData = _snapshot.data;
return _snapshot.hasData ? Container(
height :MediaQuery.of(context).size.height * 0.75,
child: ListView.builder(
itemCount: _usersData.length,
itemBuilder: (BuildContext _context,
int _index){
var _userData = _usersData[_index];
var _currentTime = DateTime.now();
var _isUserActive = _userData.lastseen.toDate().isBefore( //ERROR
_currentTime.subtract(Duration(hours: 1),
),
);
return ListTile(
title: Text(_userData.name),
leading: Container(
width: 50,
height: 50,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(100),
image: DecorationImage(
fit: BoxFit.cover,
我有这个错误;
'以下 NoSuchMethodError 被抛出构建:方法'toDate'在 null 上被调用。Receiver: null 尝试调用:toDate() ' 有谁知道如何解决这个问题?
提前致谢
解决方案
变量 lastseen 为 null 并且您正在尝试对其调用方法。尝试使用 null 感知运算符来保护您免受可能的 null 的影响,例如?.
或??
参见此处:
var _isUserActive = _userData?.lastseen?.toDate()?.isBefore(
_currentTime.subtract(Duration(hours: 1),
),
)??false;
通过使用?.
我们可以防止您遇到的错误,如果最后一个方法/属性评估为 null ,??
我们将分配给值 false。_isUserActive
还要检查您是否toDate()
在 UserData 中的此方法内正确转换。
推荐阅读
- colors - Odoo 从 uid 获取组
- google-cloud-platform - Google Cloud Storage 上公共 URL 中包含 uuidv4 的文件的安全性
- salt-stack - 是否建议使用自定义执行模块更新grains
- mysql - mysql - 选择某年之后出生的人
- c++ - 我正在尝试从本书中做一个练习:Programming --Principles and Practice Using C++ (Second Edition)
- python - vstack 如何根据 numpy 文档工作
- python - 如何关闭此对话框
- c - 使用外部中断从睡眠模式唤醒 Adafruit Feather 32u4
- javascript - Javascript Async Await 等待两个函数完成
- assembly - 我怎么知道我的代码是什么目标文件格式?