Files
fcs/lib/charts/po_balanceby_buyer.dart
2020-05-29 07:45:27 +06:30

99 lines
2.8 KiB
Dart

import 'package:charts_flutter/flutter.dart' as charts;
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/chart_model.dart';
import 'package:fcs/theme/theme.dart';
import 'package:fcs/vo/po.dart';
import 'package:fcs/widget/local_text.dart';
class POBalanceChart_ extends StatefulWidget {
@override
_POBalanceChartState createState() => _POBalanceChartState();
}
class _POBalanceChartState extends State<POBalanceChart_> {
static final numberFormatter = new NumberFormat("#,###");
List<POBuyerData> chartSummary = new List();
List<charts.Series<POBuyerData, String>> series;
@override
void initState() {
super.initState();
var chartModel = Provider.of<ChartModel>(context, listen: false);
if (mounted) {
load(chartModel);
}
}
Future<void> load(ChartModel chartModel) async {
var _u = await chartModel.loadPOBalancesForBuyer_();
if (_u == null) return;
setState(() {
this.chartSummary = _u;
});
}
@override
Widget build(BuildContext context) {
List<charts.Series<POBuyerData, String>> series = [
charts.Series(
id: "Subscribers",
data: this.chartSummary,
domainFn: (POBuyerData series, _) => series.status,
measureFn: (POBuyerData series, _) => series.amount,
colorFn: (POBuyerData series, _) =>
charts.ColorUtil.fromDartColor(series.getColor),
labelAccessorFn: (POBuyerData series, _) =>
'${numberFormatter.format(series.amount)}'),
];
return Container(
height: 200,
child: Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
LocalText(context, 'po.balances',
color: primaryColor, fontSize: 16),
IconButton(
icon: Icon(
Icons.refresh,
color: primaryColor,
),
onPressed: () {
_load();
},
)
],
),
Expanded(
child: charts.BarChart(
series,
animate: true,
vertical: false,
defaultRenderer: new charts.BarRendererConfig(
barRendererDecorator: new charts.BarLabelDecorator<String>(
labelPosition: charts.BarLabelPosition.auto,
),
),
),
),
],
),
);
}
Future<void> _load() async {
var chartModel = Provider.of<ChartModel>(context);
var _s = await chartModel.loadPOBalancesForBuyer_();
if (_s == null) return;
setState(() {
this.chartSummary = _s;
});
}
}