date - 从 Cloud_Firestore 到日期的 Flutter Dart 错误格式时间步长
问题描述
我将膳食和日期存储在 Cloud_Firestore 中。取回它,它看起来像在屏幕显示上显示的那样。
我试图用 DateTime 形成时间戳,但这不起作用。我还尝试使用 intl.dart 包对其进行格式化,如何解析时间戳并将其格式化为年、月和日?
代码
import 'package:flutter/material.dart';
import 'package:mealapp/models/Widgets/whenAndWhatToEat.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:intl/intl.dart';
import 'package:mealapp/models/global.dart';
class MealTile extends StatefulWidget {
final MealsAndWhen mealsAndWhen;
MealTile ({ this.mealsAndWhen });
@override
MealTileState createState() {
return MealTileState();
}
}
class MealTileState extends State<MealTile> {
String id;
final db = Firestore.instance;
String meal;
Widget buildItem(DocumentSnapshot doc) {
return Container(
margin: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(
'Meal: ${doc.data['Meal']}',
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold, color: Colors.white),
textAlign: TextAlign.center,
),
Text(
'Date: ${doc.data['Date']}',
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold, color: Colors.white),
textAlign: TextAlign.center,
),
SizedBox(height: 12),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
SizedBox(width: 8),
FlatButton(
onPressed: () => deleteData(doc),
child: Text('Delete',
style: TextStyle(fontWeight: FontWeight.bold,
color: Colors.white)
),
),
],
),
],
),
decoration: BoxDecoration(
color: lightBlueColor,
borderRadius: BorderRadius.all(Radius.circular(12)),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: darkGreyColor,
body: ListView(
padding: EdgeInsets.only(top: 220),
children: <Widget>[
StreamBuilder<QuerySnapshot>(
stream: db.collection('mealList').snapshots(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Column(children: snapshot.data.documents.map((doc) => buildItem(doc)).toList());
} else {
return SizedBox();
}
},
)
],
),
);
}
void deleteData(DocumentSnapshot doc) async {
await db.collection('mealList').document(doc.documentID).delete();
setState(() => id = null);
}
}
解决方案
您可以尝试在打印前将其转换为日期。
Text(
'Date: ${doc.data['Date'].toDate()}',
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold, color: Colors.white),
textAlign: TextAlign.center,
),
推荐阅读
- android - 为什么Android磁场传感器沿重力方向分量很大?
- javascript - 如何导入 JavaScript 库的源文件?
- java - 如何从对象调用覆盖方法
- angular - localhost:4200 和 localhost:4200/projectName 有什么区别?
- highcharts - 使用 highcharts-vue 和 axios 绘制可变数量的系列
- spring - 用于实践的 Spring 和 Hibernate 项目
- tcl - 如何从 -command 选项中的代码获取结果
- reactjs - 如何为每个 Material-UI TableRow 添加 react-router?
- python - python pandas不计算订单对
- javascript - 在发送到服务器之前编辑数据(特别是浏览器指纹)?