我正在尝试使用 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 上被调用。 接收器:空 尝试调用:toDate() ' 有谁知道如何解决这个问题?
提前致谢
答案 0 :(得分:0)
变量 lastseen 为空并且您正试图对其调用方法。尝试使用诸如 ?.
或 ??
之类的可感知空值的运算符来防止可能出现的空值,请参阅 here:
var _isUserActive = _userData?.lastseen?.toDate()?.isBefore(
_currentTime.subtract(Duration(hours: 1),
),
)??false;
通过使用 ?.
,我们可以防止您遇到的错误,如果最后一个方法/属性的计算结果为 null,我们会使用 ??
为 _isUserActive
分配值 false。
还要检查您是否在 UserData 中的此方法 toDate()
中正确转换。