flutter - 参数类型“日期时间”不能分配给参数类型“时间戳”
问题描述
我正在使用 Firebase 和 Flutter 并希望存储到期日期的值,但我收到相互冲突的消息,这不允许我以我希望的格式存储它
模型导入“包:cloud_firestore/cloud_firestore.dart”;
class Task {
final String id;
final Timestamp due;
Task({
this.id,
this.due,
});
factory Task.fromDoc(DocumentSnapshot doc) {
return Task(
id: doc.data()['id'],
due: doc.data()['due'],
);
}
}
写入数据
DateTime _date = DateTime.now();
TextEditingController _dateController = TextEditingController();
void _selectDate() async {
final DateTime newDate = await showDatePicker(
context: context,
initialDate: _date,
firstDate: DateTime.now(),
lastDate: DateTime.now().add(Duration(days: 90)),
helpText: 'Select date for task',
);
if (newDate != null) {
setState(() {
_date = newDate;
_dateController.text =
DateFormat("E, d MMM yyyy").format(_date).toString();
});
}
}
TextFormField(
controller: _dateController,
onTap: _selectDate,
enabled: true,
readOnly: true,
decoration: InputDecoration(labelText: 'Date'),
),
Task task = Task(budget: _sliderValue, due: _date);
DatabaseService.updateDate(taskId: _taskId, task: task);
static void updateDate({String taskId, Task task}) {
DocumentReference taskRef = tasksRef.doc(taskId);
tasksRef.get().then((doc) {
taskRef.update({
'due': task.due,
'budget': task.budget,
'status': 'open',
});
});
}
解决方案
以下行显示_date
定义为DateTime
:
DateTime _date = DateTime.now();
在这里,您尝试将属性传递_date
给Task
构造函数due
:
Task task = Task(budget: _sliderValue, due: _date);
但是,due
的属性Task
必须是Timestamp
:
class Task {
final String id;
final Timestamp due;
...
要修复错误,您需要转换DateTime
为Timestamp
使用Timestamp.fromDate()
.
Task task = Task(budget: _sliderValue, due: Timestamp.fromDate(_date));
推荐阅读
- javacard - JavaCard Spec 2.2.2 及更低版本中 cap-file 中的可选描述符组件
- wordpress - 如何在wordpress菜单中添加搜索按钮
- python - 用两个 slug 反转一个 url
- javascript - 为什么本地存储的条件不起作用?
- python - 根据另一个列表对元组列表进行排序
- python - 熊猫:如果组的大小大于平均值,则丢弃行
- android - 带有 SAML 的 Android Cognito (O365)
- python - 两个列表之间的Python多重条件
- html - HTML/CSS 跨浏览器对齐问题
- node.js - MongoDB Aggregate:首先按现有值排序