Advertisement
Guest User

StatisticFragment

a guest
Jan 4th, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 3.68 KB | None | 0 0
  1. import 'dart:convert';
  2.  
  3. import 'package:flutter/material.dart';
  4. import 'package:charts_flutter/flutter.dart' as charts;
  5. import 'package:vendorapp/helper/SharedPreferencesHelper.dart';
  6. import 'package:vendorapp/model/Statistic.dart';
  7. import 'package:http/http.dart' as http;
  8. import 'package:vendorapp/model/UserMdl.dart';
  9. import 'package:vendorapp/screens/statistic/statistic_presenter.dart';
  10. import 'package:vendorapp/screens/statistic/statistic_view.dart';
  11.  
  12. class StatisticFragmentWidget extends StatefulWidget {
  13.   StatisticPresenter presenter;
  14.   List<AsignList> asignList;
  15.   var isLoading = true;
  16.  
  17.   StatisticFragmentWidget();
  18.  
  19.   /*/// Creates a [LineChart] with sample data and no transition.
  20.   factory StatisticFragmentWidget.withSampleData() {
  21.     return new StatisticFragmentWidget(
  22.       _createSampleData(),
  23.       // Disable animations for image tests.
  24.       animate: false,
  25.     );
  26.   }*/
  27.  
  28.   @override
  29.   State<StatefulWidget> createState() {
  30.     // TODO: implement createState
  31.     return new StatisticFragmentState();
  32.   }
  33. }
  34.  
  35. class StatisticFragmentState extends State<StatisticFragmentWidget>  implements StatisticView {
  36.   Color color;
  37.   final globalKey = new GlobalKey<ScaffoldState>();
  38.   UserMdl user;
  39.  
  40.   @override
  41.   void onGetStatisticSuccess(Statistic statisticMdl) {
  42.     this.widget.asignList = statisticMdl.data;
  43.     setState(() {
  44.       this.widget.isLoading = false;
  45.     });
  46.   }
  47.  
  48.  
  49.   @override
  50.   void onErrorLoading(String message) {
  51.     throw Exception(message);
  52.   }
  53.  
  54.   @override
  55.   void initState() {
  56.     super.initState();
  57.     this.widget.presenter = new StatisticPresenter(this);
  58.   }
  59.  
  60.   @override
  61.   Future<void> didChangeDependencies() async {
  62.     super.didChangeDependencies();
  63.     if (user == null) {
  64.       await initUserProfile();
  65.     }
  66.   }
  67.  
  68.   Future<void> initUserProfile() async {
  69.     UserMdl up = await AppSharedPreferences.getUserProfile();
  70.     setState(() {
  71.       user = up;
  72.       this.widget.presenter.doGetData(user.token);
  73.     });
  74.   }
  75.  
  76.   @override
  77.   Widget build(BuildContext context) {
  78.     return Scaffold(
  79.       body: this.widget.isLoading
  80.           ? Center(
  81.         child: CircularProgressIndicator(),
  82.       ) : charts.LineChart(_createStatisticData(this.widget.asignList),
  83.           animate: false,
  84.           defaultRenderer: new charts.LineRendererConfig(includePoints: true)),
  85.     );
  86.   }
  87.  
  88.   Future<Statistic> getStatistic() async {
  89.     final response = await http.get(
  90.         'https://vendor.stickearn.net/api/statistic/installation?start_date=-1month&end_date=today');
  91.     print(response.body);
  92.     if (response.statusCode == 200) {
  93.       return Statistic.fromJson(json.decode(response.body));
  94.     } else {
  95.       throw Exception('Failed to load post');
  96.     }
  97.   }
  98.  
  99. }
  100.  
  101. /// Create one series with sample hard coded data.
  102. List<charts.Series<LinearStatistic, int>> _createStatisticData(List<AsignList> installment) {
  103.  
  104. final installmentList = [];
  105.  
  106. for (var i = 0; i < installment.length; i++) {
  107.   installmentList.add(new LinearStatistic(i, installment[i].count));
  108. }
  109.  
  110. final data = [
  111.   new LinearStatistic(0, 5),
  112.   new LinearStatistic(1, 25),
  113.   new LinearStatistic(2, 100),
  114.   new LinearStatistic(3, 75),
  115. ];
  116.  
  117. print(installmentList.toString());
  118. print(data.toString());
  119.  
  120. return [
  121.   new charts.Series<LinearStatistic, int>(
  122.     id: 'Sales',
  123.     colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
  124.     domainFn: (LinearStatistic sales, _) => sales.position,
  125.     measureFn: (LinearStatistic sales, _) => sales.count,
  126.     data: installmentList,
  127.     )
  128.   ];
  129. }
  130.  
  131. /// Sample linear data type.
  132. class LinearStatistic {
  133.   final int position;
  134.   final int count;
  135.  
  136.   LinearStatistic(this.position, this.count);
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement