【发布时间】:2021-12-16 16:40:45
【问题描述】:
这需要一些我在 Dart 中还没有的天才、经验和知识,所以我正在寻求帮助。
我正在尝试填充折线图,当用户第一次开始使用软件时,图表数据中会有“空”条目。也可能有“零”条目或几个星期或条目根本没有条目。我想确保基于始终显示 13 个条目的图表,我的折线图对于任何缺失的条目显示为零(对于销售收入 - yAxis)。
例如,mockupGraphData 是一种现有情况,其中几个销售日期缺少条目(基于每周条目)并且没有足够的条目来满足图表需求。
我想自动输入“归零”日期。其中日期是缺失日期的索引,GraphData.yAxis(收入)为零。
下面当然不会编译,考虑最后一个循环伪代码,我认为如果我可以绕过 mockupGraphData 中不存在的索引...
void main() {
// Actual "mock" input data
List<GraphData> mockupGraphData = [
GraphData(1586761200000, 145333),
GraphData(1587366000000, 433343),
GraphData(1587970800000, 223432),
GraphData(1589180400000, 122221),
GraphData(1589785200000, 982347),
GraphData(1590994800000, 234322),
];
// Required graph dates as per below calculations (13 entries):
// 1583737200000
// 1584342000000
// 1584946800000
// 1585551600000
// 1586156400000
// 1586761200000
// 1587366000000
// 1587970800000
// 1588575600000
// 1589180400000
// 1589785200000
// 1590390000000
// 1590994800000
int entries = 13;
int latestDateReported = DateTime(2020, 6, 1).millisecondsSinceEpoch;
int oneWeek = Duration(days: 7).inMilliseconds;
int earliestEntryDate = latestDateReported - (oneWeek * entries);
List<int> graphRequiredDates = [];
List<GraphData> finalData = [];
for (int i = 0; i < entries; i++) {
earliestEntryDate += oneWeek;
graphRequiredDates.add(earliestEntryDate);
}
// What I would like to do
for (int i = 0; i < entries; i++) {
if (!mockupGraphData.contains(GraphData(graphRequiredDates[i]))) {
finalData.add(GraphData(graphRequiredDates[i], 0));
}
}
print(finalData);
}
class GraphData {
int xAxis; // Sale date
int yAxis; // Sale income
GraphData(this.xAxis, this.yAxis);
@override
String toString() {
return '$xAxis $yAxis';
}
}
// IDEAL OUTPUT:
List<GraphData> mockupGraphData = [
GraphData(1583737200000, 0),
GraphData(1584342000000, 0),
GraphData(1584946800000, 0),
GraphData(1585551600000, 0),
GraphData(1586156400000, 0),
GraphData(1586761200000, 145333),
GraphData(1587366000000, 433343),
GraphData(1587970800000, 223432),
GraphData(1588575600000, 0),
GraphData(1589180400000, 122221),
GraphData(1589785200000, 982347),
GraphData(1590390000000, 0),
GraphData(1590994800000, 234322),
];
【问题讨论】:
标签: flutter loops dart arraylist