【发布时间】:2023-03-06 15:19:02
【问题描述】:
我正在创建一个显示温度随时间变化的颤振图表。目前,X 轴显示月份和日期,这是我不想要的。我希望它以 HH:MM 格式显示小时和分钟。这是我的图表现在的样子:
这是我的图表小部件代码:
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:charts_flutter/flutter.dart';
final db = Firestore.instance;
class TemperatureData {
// Requires Firestore epoch time to be converted to DateTime with DateTime.fromMillisecondsSinceEpoch(time * 1000)
final int temperature;
final DateTime time;
TemperatureData(this.temperature, this.time);
}
List<Series> _createChartData(List<TemperatureData> temperatureData) {
var data = [
new Series<TemperatureData, DateTime>(
id: 'Temperature',
domainFn: (TemperatureData temperatureData, _) => temperatureData.time,
measureFn: (TemperatureData temperatureData, _) =>
temperatureData.temperature,
data: temperatureData,
),
];
return data;
}
List<TemperatureData> _parseTemperatureData(rawTemperatureData) {
List<TemperatureData> parsedList = [];
for (var i = 0; i < rawTemperatureData['Temperature'].length; i++) {
parsedList.add(TemperatureData(
rawTemperatureData['Temperature'][i]['Temperature'],
rawTemperatureData['Temperature'][i]['Time'].toDate()));
}
return parsedList;
}
class TemperatureChart extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _TemperatureChartState();
}
}
class _TemperatureChartState extends State<TemperatureChart> {
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: Firestore.instance
.collection('SensorData')
.document('MapTest')
.snapshots(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Container(
height: 300,
child: TimeSeriesChart(
_createChartData(_parseTemperatureData(snapshot.data)),
animate: true,
),
);
} else {
return CircularProgressIndicator();
}
});
}
}
【问题讨论】:
-
使用
DateTimeAxisSpec- 见stackoverflow.com/questions/51136832/… -
显然,根据需要将
dd更改为HH或mm的某个变体。
标签: flutter google-cloud-firestore