当我动态创建数据时未绘制饼图,但是当我创建硬编码值时(我检查了动态创建的列表,它的内容与硬编码的内容完全一样)也可以正常工作。这是我的代码如下:
static List<charts.Series<InvestmentPie, String>> _createSampleData(List<Investment> invList) {
List<InvestmentPie> data = [];
for(int i=0;i<invList.length;i++){
double chartVal = 0.0;
List<AssetClass> assetClass = invList[i].assetClasses;
for(int j=0;j<assetClass.length;j++){
AssetClass assetCl = assetClass[j];
chartVal += (assetCl.allocation * invList[i].valValue1) / 100;
}
Color clr = Colors.primaries[Random().nextInt(Colors.primaries.length)];
String nm = invList[i].stockName;
int nms = chartVal.round();
InvestmentPie inv1 = new InvestmentPie(nm, nms,
charts.Color.fromHex(code: '#${clr.value.toRadixString(16)}'));
data.add(inv1);
}
Color clr = Colors.primaries[Random().nextInt(Colors.primaries.length)];
List<InvestmentPie> data1 = [
new InvestmentPie('BCP Protected Portfolio Bond - Growth Version', 270,
charts.Color.fromHex(code: '#${clr.value.toRadixString(16)}')),
new InvestmentPie('BCP Film Finance Scheme 2 (March 2019)', 411,
charts.Color.fromHex(code: '#${clr.value.toRadixString(16)}')),
new InvestmentPie('BCP Protected Portfolio Bond - Growth Plus Version',
285, charts.Color.fromHex(code: '#${clr.value.toRadixString(16)}')),
new InvestmentPie(
'BCP Global Equity Absolute Return Bond 7 - Growth Plus Version',
342,
charts.Color.fromHex(code: '#${clr.value.toRadixString(16)}')),
];
return [
new charts.Series<InvestmentPie, String>(
id: 'Investments',
domainFn: (InvestmentPie investment, _) => investment.stockName,
measureFn: (InvestmentPie investment, _) => investment.investmentValue,
colorFn: (InvestmentPie investment, _) => investment.barColor,
labelAccessorFn: (InvestmentPie investment, _) => investment.stockName,
data: data,
)
];
}
在上面的代码中如果我使用'data1',那么我正在获取饼图,如果我将其更改为'data',则它显示为空图表。我确定问题出在我的数据列表的创建上,但不知道会是什么问题。