【发布时间】:2021-10-20 07:12:32
【问题描述】:
我收到了这个错误:
类型“Future”不是类型转换中“List”类型的子类型
无法从未来投射列表
最终名单 caMois = List.from(BddAMKGraphCA().getDataGraphCA('2021') as List).toList();
我使用包mysql1而不是PHP json来绑定数据:有效,我可以看到结果
我该如何解决这个错误?
import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_charts/charts.dart';
import 'bdd_graph_annee.dart';
class SimpleBarChart extends StatelessWidget {
final String anneeCA;
SimpleBarChart({Key? key, required this.anneeCA}) : super(key: key);
final List<CaMoisData> caMois =
List<CaMoisData>.from(BddAMKGraphCA().getDataGraphCA('2021') as List).toList();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: new AppBar(title: const Text('CA PAR MOIS')),
body: Center(
child: Container(
child: SfCartesianChart(
title: ChartTitle(text: 'CA DE 2021'),
//legend: Legend(isVisible: true),
series: <ChartSeries>[
BarSeries<CaMoisData, String>(
animationDuration: 1500,
dataSource: caMois,
xValueMapper: (CaMoisData monCa, _) => monCa.mois,
yValueMapper: (CaMoisData monCa, _) => monCa.ca,
dataLabelSettings: DataLabelSettings(isVisible: true)),
],
primaryXAxis: CategoryAxis(),
primaryYAxis: NumericAxis(
edgeLabelPlacement: EdgeLabelPlacement.shift,
//title: AxisTitle(text: 'CA DE 2021'),
)))));
}
}
import 'constant/bdd_constant.dart';
import 'package:mysql1/mysql1.dart';
// la classe de données
class CaMoisData {
final String mois;
final double ca;
CaMoisData(this.mois, this.ca); //, this.y2);
}
class BddAMKGraphCA {
Future<List<dynamic>> getDataGraphCA(String anneeCA) async {
final conn = await MySqlConnection.connect(ConnectionSettings(
host: ConstantBdd.host,
port: ConstantBdd.port,
user: ConstantBdd.user,
password: ConstantBdd.password,
db: ConstantBdd.db,
));
var sql = "SELECT ";
sql += "'Janv',replace(replace(format(ifnull(sum(case when DATE_FORMAT(cmd_date,'%m/%Y')='01/" +anneeCA +"' then cmd_ttc else 0 end),'0'), 2), ',',' '),'.',',') as 'tot_01',";
sql += "'Févr',replace(replace(format(ifnull(sum(case when DATE_FORMAT(cmd_date,'%m/%Y')='02/" +anneeCA +"' then cmd_ttc else 0 end),'0'), 2), ',',' '),'.',',') as 'tot_02',";
sql += "'Mars',replace(replace(format(ifnull(sum(case when DATE_FORMAT(cmd_date,'%m/%Y')='03/" +anneeCA +"' then cmd_ttc else 0 end),'0'), 2), ',',' '),'.',',') as 'tot_03',";
sql += "'Avril',replace(replace(format(ifnull(sum(case when DATE_FORMAT(cmd_date,'%m/%Y')='04/" +anneeCA +"' then cmd_ttc else 0 end),'0'), 2), ',',' '),'.',',') as 'tot_04',";
sql += "'Mai',replace(replace(format(ifnull(sum(case when DATE_FORMAT(cmd_date,'%m/%Y')='05/" +anneeCA +"' then cmd_ttc else 0 end),'0'), 2), ',',' '),'.',',') as 'tot_05',";
sql += "FROM cmde ";
sql += "WHERE cmd_date between '" +anneeCA +"-01-01' and '" +anneeCA +"-12-31' order by cmd_date desc";
var results = await conn.query(sql);
await conn.close();
//print(results.toList());
return results.toList();
}
}
【问题讨论】: