first step form chart
parent
2d19a83670
commit
6ebee5dbf6
@ -0,0 +1,7 @@
|
||||
/// Sample linear data type.
|
||||
class ChartAxis {
|
||||
final int xAxis;
|
||||
final int yAxis;
|
||||
|
||||
ChartAxis(this.xAxis, this.yAxis);
|
||||
}
|
||||
@ -1,143 +1,183 @@
|
||||
import 'package:charts_flutter/flutter.dart' as charts;
|
||||
import 'package:doctor_app_flutter/config/size_config.dart';
|
||||
import 'package:doctor_app_flutter/models/chart_axis_model.dart';
|
||||
import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.dart';
|
||||
import 'package:doctor_app_flutter/providers/patients_provider.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/charts/app_line_chart.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class BodyMeasurementsScreen extends StatelessWidget {
|
||||
BodyMeasurementsScreen();
|
||||
List<VitalSignResModel> vitalList;
|
||||
// ;
|
||||
PatientsProvider patientsProv;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
_seriesData = List<charts.Series<Pollution, String>>();
|
||||
_seriesPieData = List<charts.Series<Task, String>>();
|
||||
_seriesLineData = List<charts.Series<Sales, int>>();
|
||||
_generateData();
|
||||
patientsProv = Provider.of<PatientsProvider>(context);
|
||||
List<charts.Series> seriesList = generateData();
|
||||
|
||||
// generateData();
|
||||
return AppScaffold(
|
||||
appBarTitle: 'Body Measurements',
|
||||
body: RoundedContainer(
|
||||
height: SizeConfig.realScreenHeight*0.4,
|
||||
child: Padding(
|
||||
padding: EdgeInsets.all(8.0),
|
||||
child: Container(
|
||||
child: Center(
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Text(
|
||||
'Body Mass Index',
|
||||
style: TextStyle(
|
||||
fontSize: 24.0, fontWeight: FontWeight.bold),
|
||||
),
|
||||
Expanded(
|
||||
child: charts.BarChart(
|
||||
_seriesData,
|
||||
animate: true,
|
||||
barGroupingType: charts.BarGroupingType.grouped,
|
||||
// behaviors: [new charts.SeriesLegend()],
|
||||
// primaryMeasureAxis: ,
|
||||
animationDuration: Duration(seconds: 1),
|
||||
body: ListView(
|
||||
children: <Widget>[
|
||||
Column(
|
||||
children: <Widget>[
|
||||
RoundedContainer(
|
||||
height: SizeConfig.realScreenHeight * 0.4,
|
||||
child: Padding(
|
||||
padding: EdgeInsets.all(8.0),
|
||||
child: Container(
|
||||
child: Center(
|
||||
child: Text('sss'),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: SizeConfig.realScreenHeight * 0.4,
|
||||
child: Center(
|
||||
child: Expanded(
|
||||
child: charts.TimeSeriesChart(seriesList,
|
||||
animate: true,
|
||||
behaviors: [
|
||||
new charts.RangeAnnotation([
|
||||
new charts.RangeAnnotationSegment(
|
||||
new DateTime(2017, 10, 4),
|
||||
new DateTime(2017, 10, 15),
|
||||
charts.RangeAnnotationAxisType.domain),
|
||||
]),
|
||||
]),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
List<charts.Series<Pollution, String>> _seriesData;
|
||||
List<charts.Series<Task, String>> _seriesPieData;
|
||||
List<charts.Series<Sales, int>> _seriesLineData;
|
||||
|
||||
_generateData() {
|
||||
var data1 = [
|
||||
new Pollution(1980, 'USA', 40),
|
||||
generateData() {
|
||||
var myFakeMobileData3 = [
|
||||
new LinearSales(0, 15),
|
||||
new LinearSales(1, 75),
|
||||
new LinearSales(2, 300),
|
||||
new LinearSales(3, 225),
|
||||
];
|
||||
final myFakeDesktopData = [
|
||||
new ChartAxis(10, 35),
|
||||
new ChartAxis(1, 36),
|
||||
new ChartAxis(5, 40),
|
||||
new ChartAxis(17, 35),
|
||||
new ChartAxis(4, 35),
|
||||
new ChartAxis(5, 36),
|
||||
new ChartAxis(15, 35),
|
||||
new ChartAxis(7, 40),
|
||||
new ChartAxis(11, 36),
|
||||
new ChartAxis(2, 35),
|
||||
new ChartAxis(10, 38),
|
||||
new ChartAxis(1, 38),
|
||||
];
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), 5),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 26), 25),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 3), 100),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 10), 75),
|
||||
];
|
||||
|
||||
|
||||
_seriesData.add(
|
||||
charts.Series(
|
||||
domainFn: (Pollution pollution, _) => '',
|
||||
measureFn: (Pollution pollution, _) => pollution.quantity,
|
||||
id: '2017',
|
||||
data: data1,
|
||||
fillPatternFn: (_, __) => charts.FillPatternType.solid,
|
||||
fillColorFn: (Pollution pollution, _) =>
|
||||
charts.ColorUtil.fromDartColor(Color(0xff990099)),
|
||||
),
|
||||
);
|
||||
_seriesData.add(
|
||||
charts.Series(
|
||||
domainFn: (Pollution pollution, _) => '',
|
||||
measureFn: (Pollution pollution, _) => pollution.quantity,
|
||||
id: '2017',
|
||||
data: data1,
|
||||
fillPatternFn: (_, __) => charts.FillPatternType.solid,
|
||||
fillColorFn: (Pollution pollution, _) =>
|
||||
charts.ColorUtil.fromDartColor(Color(0xff990099)),
|
||||
),
|
||||
);
|
||||
_seriesData.add(
|
||||
charts.Series(
|
||||
domainFn: (Pollution pollution, _) => '',
|
||||
measureFn: (Pollution pollution, _) => pollution.quantity,
|
||||
id: '2017',
|
||||
data: data1,
|
||||
fillPatternFn: (_, __) => charts.FillPatternType.solid,
|
||||
fillColorFn: (Pollution pollution, _) =>
|
||||
charts.ColorUtil.fromDartColor(Color(0xff990099)),
|
||||
),
|
||||
);
|
||||
_seriesData.add(
|
||||
charts.Series(
|
||||
domainFn: (Pollution pollution, _) => '',
|
||||
measureFn: (Pollution pollution, _) => pollution.quantity,
|
||||
id: '2017',
|
||||
data: data1,
|
||||
fillPatternFn: (_, __) => charts.FillPatternType.solid,
|
||||
fillColorFn: (Pollution pollution, _) =>
|
||||
charts.ColorUtil.fromDartColor(Color(0xff990099)),
|
||||
),
|
||||
);
|
||||
_seriesData.add(
|
||||
charts.Series(
|
||||
domainFn: (Pollution pollution, _) => '',
|
||||
measureFn: (Pollution pollution, _) => pollution.quantity,
|
||||
id: '2017',
|
||||
data: data1,
|
||||
fillPatternFn: (_, __) => charts.FillPatternType.solid,
|
||||
fillColorFn: (Pollution pollution, _) =>
|
||||
charts.ColorUtil.fromDartColor(Color(0xff990099)),
|
||||
),
|
||||
);
|
||||
|
||||
final List<TimeSeriesSales> data1 = [];
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
final List<ChartAxis> myFakeDesktopData1 = [];
|
||||
List<VitalSignResModel> vitalList = patientsProv.patientVitalSignList;
|
||||
if (vitalList.length > 0) {
|
||||
// vitalList.sort((VitalSignResModel a, VitalSignResModel b) {
|
||||
// return a.bodyMassIndex.toInt() - b.bodyMassIndex.toInt();
|
||||
// });
|
||||
for (int x = vitalList.length - 1; x >= 0; x--) {
|
||||
myFakeDesktopData1.add(
|
||||
new ChartAxis(
|
||||
// x,
|
||||
vitalList[x].vitalSignDate.day,
|
||||
// 20,
|
||||
// vitalSign.bodyMassIndex.toInt(),
|
||||
// vitalSign.vitalSignDate.toString(),
|
||||
// vitalSign.pulseBeatPerMinute!=null?vitalSign.pulseBeatPerMinute.toInt():50,
|
||||
vitalList[x].bodyMassIndex.toInt(),
|
||||
),
|
||||
);
|
||||
data1.add(TimeSeriesSales(new DateTime(vitalList[x].vitalSignDate.year,vitalList[x].vitalSignDate.month,vitalList[x].vitalSignDate.day),
|
||||
vitalList[x].bodyMassIndex.toInt()));
|
||||
// data1.add(TimeSeriesSales(vitalList[x].vitalSignDate,vitalList[x].bodyMassIndex.toInt() + x * 15));
|
||||
}
|
||||
// vitalList.forEach((VitalSignResModel vitalSign) {
|
||||
|
||||
class Pollution {
|
||||
String place;
|
||||
int year;
|
||||
int quantity;
|
||||
// // print(e);'
|
||||
// // int x = int.parse(vitalSign.bodyMassIndex);
|
||||
// myFakeDesktopData1.add(
|
||||
// new ChartAxis(
|
||||
// vitalSign.vitalSignDate.day,
|
||||
// // 20,
|
||||
// // vitalSign.bodyMassIndex.toInt(),
|
||||
// // vitalSign.vitalSignDate.toString(),
|
||||
// // vitalSign.pulseBeatPerMinute!=null?vitalSign.pulseBeatPerMinute.toInt():50,
|
||||
// vitalSign.bodyMassIndex.toInt(),
|
||||
// ),
|
||||
// );
|
||||
// });
|
||||
|
||||
Pollution(this.year, this.place, this.quantity);
|
||||
// // map(
|
||||
// // (VitalSignResModel vitalSign) {
|
||||
// // print(vitalSign);
|
||||
// // myFakeDesktopData1.add(
|
||||
// // ChartAxis(vitalSign.transNo, vitalSign.bodyMassIndex),
|
||||
// // );
|
||||
// // },
|
||||
// // );
|
||||
// }
|
||||
}
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
measureFn: (TimeSeriesSales sales, _) => sales.sales,
|
||||
data: data1,
|
||||
)
|
||||
// charts.Series<ChartAxis, int>(
|
||||
// id: 'ww',
|
||||
// // Light shade for even xAxiss, dark shade for odd.
|
||||
// colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault,
|
||||
// // dashPatternFn: (ChartAxis yAxis, _) => [2, 4],
|
||||
// strokeWidthPxFn: (ChartAxis yAxis, _) => 2.5,
|
||||
// domainFn: (ChartAxis xAxis, _) => xAxis.xAxis,
|
||||
// measureFn: (ChartAxis yAxis, _) => yAxis.yAxis,
|
||||
// data: myFakeDesktopData1,
|
||||
// ),
|
||||
// new charts.Series<LinearSales, int>(
|
||||
// id: 'Desktop',
|
||||
// colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
|
||||
// domainFn: (LinearSales sales, _) => sales.year,
|
||||
// measureFn: (LinearSales sales, _) => sales.sales,
|
||||
// data: myFakeDesktopData1,
|
||||
// )
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
class Task {
|
||||
String task;
|
||||
double taskvalue;
|
||||
Color colorval;
|
||||
class LinearSales {
|
||||
final int year;
|
||||
final int sales;
|
||||
|
||||
Task(this.task, this.taskvalue, this.colorval);
|
||||
LinearSales(this.year, this.sales);
|
||||
}
|
||||
|
||||
class Sales {
|
||||
int yearval;
|
||||
int salesval;
|
||||
/// Sample time series data type.
|
||||
class TimeSeriesSales {
|
||||
final DateTime time;
|
||||
final int sales;
|
||||
|
||||
Sales(this.yearval, this.salesval);
|
||||
TimeSeriesSales(this.time, this.sales);
|
||||
}
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:charts_flutter/flutter.dart' as charts;
|
||||
|
||||
class AppLineChart extends StatelessWidget {
|
||||
const AppLineChart({
|
||||
Key key,
|
||||
@required this.seriesList,
|
||||
this.chartTitle,
|
||||
}) : super(key: key);
|
||||
|
||||
final List<charts.Series> seriesList;
|
||||
|
||||
final String chartTitle;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Text(
|
||||
'Body Mass Index',
|
||||
style: TextStyle(fontSize: 24.0, fontWeight: FontWeight.bold),
|
||||
),
|
||||
Expanded(
|
||||
child: charts.LineChart(seriesList,
|
||||
defaultRenderer: new charts.LineRendererConfig(
|
||||
includeArea: false, stacked: true),
|
||||
animate: true),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue