From ac25c2c7f063c16bf7fab5464498d714826bc7df Mon Sep 17 00:00:00 2001 From: Benjamin Ramhorst Date: Wed, 9 Feb 2022 17:00:36 +0000 Subject: [PATCH 1/6] Added requirements for bar charts --- pubspec.lock | 28 ++++++++++++++++++++++++++++ pubspec.yaml | 1 + 2 files changed, 29 insertions(+) diff --git a/pubspec.lock b/pubspec.lock index 91d5ff9..2408d0c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -29,6 +29,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.1" + charts_common: + dependency: transitive + description: + name: charts_common + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.0" + charts_flutter: + dependency: "direct main" + description: + name: charts_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.0" clock: dependency: transitive description: @@ -128,6 +142,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.15.0" + intl: + dependency: transitive + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.0" js: dependency: transitive description: @@ -149,6 +170,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" matcher: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 7d5b5f9..f5ae781 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,6 +36,7 @@ dependencies: cupertino_icons: ^1.0.2 google_maps_flutter: ^2.1.1 google_maps_flutter_web: ^0.3.2+1 + charts_flutter: ^0.12.0 dev_dependencies: flutter_test: From ac3a3a76ffa56318f1c8dbd8b5a662175456830f Mon Sep 17 00:00:00 2001 From: Benjamin Ramhorst Date: Wed, 9 Feb 2022 17:06:27 +0000 Subject: [PATCH 2/6] Minor refractoring to allow for cleaner code and easier bar chart integration@ --- lib/home.dart | 6 +++--- lib/{ => view}/data.dart | 0 lib/{ => view}/map.dart | 0 lib/{ => view}/settings.dart | 0 lib/{ => view}/steps.dart | 6 +++++- 5 files changed, 8 insertions(+), 4 deletions(-) rename lib/{ => view}/data.dart (100%) rename lib/{ => view}/map.dart (100%) rename lib/{ => view}/settings.dart (100%) rename lib/{ => view}/steps.dart (67%) diff --git a/lib/home.dart b/lib/home.dart index 3d4022b..3ab7aef 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; -import 'package:leg_barkr_app/data.dart'; import 'package:leg_barkr_app/steps.dart'; -import 'package:leg_barkr_app/map.dart'; -import 'package:leg_barkr_app/settings.dart'; +import 'package:leg_barkr_app/view/data.dart'; +import 'package:leg_barkr_app/view/map.dart'; +import 'package:leg_barkr_app/view/settings.dart'; class HomeScreen extends StatefulWidget { const HomeScreen({Key? key}) : super(key: key); diff --git a/lib/data.dart b/lib/view/data.dart similarity index 100% rename from lib/data.dart rename to lib/view/data.dart diff --git a/lib/map.dart b/lib/view/map.dart similarity index 100% rename from lib/map.dart rename to lib/view/map.dart diff --git a/lib/settings.dart b/lib/view/settings.dart similarity index 100% rename from lib/settings.dart rename to lib/view/settings.dart diff --git a/lib/steps.dart b/lib/view/steps.dart similarity index 67% rename from lib/steps.dart rename to lib/view/steps.dart index 061f763..91a402f 100644 --- a/lib/steps.dart +++ b/lib/view/steps.dart @@ -5,6 +5,10 @@ class StepsPage extends StatelessWidget { @override Widget build(BuildContext context) { - return Text("Data Page"); + return Scaffold( + body: Center( + child: Text("Steps Page"), + ), + ); } } \ No newline at end of file From e21ae2e36d69e046629b663417a3782c034e6002 Mon Sep 17 00:00:00 2001 From: Benjamin Ramhorst Date: Wed, 9 Feb 2022 17:07:59 +0000 Subject: [PATCH 3/6] mend --- lib/home.dart | 8 ++++---- lib/view/{data.dart => data_page.dart} | 0 lib/view/{map.dart => map_page.dart} | 0 lib/view/{settings.dart => settings_page.dart} | 0 lib/view/{steps.dart => steps_page.dart} | 0 5 files changed, 4 insertions(+), 4 deletions(-) rename lib/view/{data.dart => data_page.dart} (100%) rename lib/view/{map.dart => map_page.dart} (100%) rename lib/view/{settings.dart => settings_page.dart} (100%) rename lib/view/{steps.dart => steps_page.dart} (100%) diff --git a/lib/home.dart b/lib/home.dart index 3ab7aef..8db5670 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; -import 'package:leg_barkr_app/steps.dart'; -import 'package:leg_barkr_app/view/data.dart'; -import 'package:leg_barkr_app/view/map.dart'; -import 'package:leg_barkr_app/view/settings.dart'; +import 'package:leg_barkr_app/view/steps_page.dart'; +import 'package:leg_barkr_app/view/data_page.dart'; +import 'package:leg_barkr_app/view/map_page.dart'; +import 'package:leg_barkr_app/view/settings_page.dart'; class HomeScreen extends StatefulWidget { const HomeScreen({Key? key}) : super(key: key); diff --git a/lib/view/data.dart b/lib/view/data_page.dart similarity index 100% rename from lib/view/data.dart rename to lib/view/data_page.dart diff --git a/lib/view/map.dart b/lib/view/map_page.dart similarity index 100% rename from lib/view/map.dart rename to lib/view/map_page.dart diff --git a/lib/view/settings.dart b/lib/view/settings_page.dart similarity index 100% rename from lib/view/settings.dart rename to lib/view/settings_page.dart diff --git a/lib/view/steps.dart b/lib/view/steps_page.dart similarity index 100% rename from lib/view/steps.dart rename to lib/view/steps_page.dart From e13a9436f44e0f808915757771f74184556f15de Mon Sep 17 00:00:00 2001 From: Benjamin Ramhorst Date: Wed, 9 Feb 2022 17:15:11 +0000 Subject: [PATCH 4/6] Added model for showing steps data --- lib/model/steps_series.dart | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 lib/model/steps_series.dart diff --git a/lib/model/steps_series.dart b/lib/model/steps_series.dart new file mode 100644 index 0000000..2b3ee3c --- /dev/null +++ b/lib/model/steps_series.dart @@ -0,0 +1,13 @@ +import 'package:charts_flutter/flutter.dart' as charts; + +class StepSeries { + final DateTime date; + final int steps; + final charts.Color barColor; + + StepSeries({ + required this.date, + required this.steps, + required this.barColor + }); +} \ No newline at end of file From c810510107e4cfd9aa7bb7c9c8717f2fc075ac08 Mon Sep 17 00:00:00 2001 From: Benjamin Ramhorst Date: Wed, 9 Feb 2022 17:52:00 +0000 Subject: [PATCH 5/6] Added bar chart for steps --- lib/home.dart | 2 +- lib/model/steps_series.dart | 11 ++-------- lib/view/steps/steps_chart.dart | 25 +++++++++++++++++++++++ lib/view/steps/steps_page.dart | 36 +++++++++++++++++++++++++++++++++ lib/view/steps_page.dart | 14 ------------- 5 files changed, 64 insertions(+), 24 deletions(-) create mode 100644 lib/view/steps/steps_chart.dart create mode 100644 lib/view/steps/steps_page.dart delete mode 100644 lib/view/steps_page.dart diff --git a/lib/home.dart b/lib/home.dart index 8db5670..47c7a2e 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:leg_barkr_app/view/steps_page.dart'; +import 'package:leg_barkr_app/view/steps/steps_page.dart'; import 'package:leg_barkr_app/view/data_page.dart'; import 'package:leg_barkr_app/view/map_page.dart'; import 'package:leg_barkr_app/view/settings_page.dart'; diff --git a/lib/model/steps_series.dart b/lib/model/steps_series.dart index 2b3ee3c..faf5958 100644 --- a/lib/model/steps_series.dart +++ b/lib/model/steps_series.dart @@ -1,13 +1,6 @@ -import 'package:charts_flutter/flutter.dart' as charts; - -class StepSeries { +class StepsSeries { final DateTime date; final int steps; - final charts.Color barColor; - StepSeries({ - required this.date, - required this.steps, - required this.barColor - }); + StepsSeries(this.date, this.steps); } \ No newline at end of file diff --git a/lib/view/steps/steps_chart.dart b/lib/view/steps/steps_chart.dart new file mode 100644 index 0000000..e911a8a --- /dev/null +++ b/lib/view/steps/steps_chart.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'package:charts_flutter/flutter.dart' as charts; +import 'package:leg_barkr_app/model/steps_series.dart'; + +class StepsChart extends StatelessWidget { + final List data; + + StepsChart(this.data); + + @override + Widget build(BuildContext context) { + List> series = [ + charts.Series( + id: "Steps", + data: data, + domainFn: (StepsSeries series, _) => series.date.day.toString() + "/" + series.date.month.toString(), + measureFn: (StepsSeries series, _) => series.steps, + colorFn: (StepsSeries series, _) => charts.ColorUtil.fromDartColor(Colors.green) + ) + ]; + + return new charts.BarChart(series, animate: true,); + } + +} \ No newline at end of file diff --git a/lib/view/steps/steps_page.dart b/lib/view/steps/steps_page.dart new file mode 100644 index 0000000..1c3981b --- /dev/null +++ b/lib/view/steps/steps_page.dart @@ -0,0 +1,36 @@ +import 'package:charts_flutter/flutter.dart' as charts; +import 'package:flutter/material.dart'; +import 'package:leg_barkr_app/model/steps_series.dart'; +import 'package:leg_barkr_app/view/steps/steps_chart.dart'; + +class StepsPage extends StatefulWidget { + const StepsPage({ Key? key }) : super(key: key); + + @override + _StepsPageState createState() => _StepsPageState(); +} + +class _StepsPageState extends State { + // Dummy data + final List data = [ + StepsSeries(DateTime.utc(2022, 2, 9), 9867), + StepsSeries(DateTime.utc(2022, 2, 8), 8123), + StepsSeries(DateTime.utc(2022, 2, 7), 10234), + StepsSeries(DateTime.utc(2022, 2, 6), 6521), + StepsSeries(DateTime.utc(2022, 2, 5), 1021), + StepsSeries(DateTime.utc(2022, 2, 4), 10567), + StepsSeries(DateTime.utc(2022, 2, 3), 7500) + ]; + + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + body: Center( + child: StepsChart(data) + ), + ), + ); + } +} \ No newline at end of file diff --git a/lib/view/steps_page.dart b/lib/view/steps_page.dart deleted file mode 100644 index 91a402f..0000000 --- a/lib/view/steps_page.dart +++ /dev/null @@ -1,14 +0,0 @@ -import 'package:flutter/material.dart'; - -class StepsPage extends StatelessWidget { - const StepsPage({ Key? key }) : super(key: key); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Center( - child: Text("Steps Page"), - ), - ); - } -} \ No newline at end of file From 72e6fa03866c8bee606c91877764ad0b264e4502 Mon Sep 17 00:00:00 2001 From: Benjamin Ramhorst Date: Wed, 9 Feb 2022 18:29:27 +0000 Subject: [PATCH 6/6] Implemented steps page --- lib/home.dart | 1 + lib/main.dart | 2 ++ lib/view/steps/steps_chart.dart | 8 ++++++-- lib/view/steps/steps_page.dart | 16 ++++++++++------ lib/view/steps/steps_today.dart | 22 ++++++++++++++++++++++ 5 files changed, 41 insertions(+), 8 deletions(-) create mode 100644 lib/view/steps/steps_today.dart diff --git a/lib/home.dart b/lib/home.dart index 47c7a2e..25f4d35 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -25,6 +25,7 @@ class _HomeScreenState extends State { @override Widget build(BuildContext context) { return Scaffold( + backgroundColor: Colors.white, body: PageView( controller: _pageController, children: const [ diff --git a/lib/main.dart b/lib/main.dart index 065a02c..6a0194c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,7 +1,9 @@ import 'package:flutter/material.dart'; import 'package:leg_barkr_app/home.dart'; +import 'package:flutter/services.dart'; void main() { + SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(statusBarColor: Colors.black12)); runApp(const Main()); } diff --git a/lib/view/steps/steps_chart.dart b/lib/view/steps/steps_chart.dart index e911a8a..ecb35e1 100644 --- a/lib/view/steps/steps_chart.dart +++ b/lib/view/steps/steps_chart.dart @@ -3,7 +3,7 @@ import 'package:charts_flutter/flutter.dart' as charts; import 'package:leg_barkr_app/model/steps_series.dart'; class StepsChart extends StatelessWidget { - final List data; + List data; StepsChart(this.data); @@ -19,7 +19,11 @@ class StepsChart extends StatelessWidget { ) ]; - return new charts.BarChart(series, animate: true,); + return Container( + height: 600, + width: double.infinity, + child: charts.BarChart(series, animate: true) + ); } } \ No newline at end of file diff --git a/lib/view/steps/steps_page.dart b/lib/view/steps/steps_page.dart index 1c3981b..2c2c3c9 100644 --- a/lib/view/steps/steps_page.dart +++ b/lib/view/steps/steps_page.dart @@ -2,6 +2,7 @@ import 'package:charts_flutter/flutter.dart' as charts; import 'package:flutter/material.dart'; import 'package:leg_barkr_app/model/steps_series.dart'; import 'package:leg_barkr_app/view/steps/steps_chart.dart'; +import 'package:leg_barkr_app/view/steps/steps_today.dart'; class StepsPage extends StatefulWidget { const StepsPage({ Key? key }) : super(key: key); @@ -25,12 +26,15 @@ class _StepsPageState extends State { @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: Center( - child: StepsChart(data) - ), - ), + return Padding( + padding: EdgeInsets.fromLTRB(0.0, 50.0, 10.0, 0.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + StepsToday(5123), + new Expanded(child: StepsChart(data)) + ], + ) ); } } \ No newline at end of file diff --git a/lib/view/steps/steps_today.dart b/lib/view/steps/steps_today.dart new file mode 100644 index 0000000..e00150c --- /dev/null +++ b/lib/view/steps/steps_today.dart @@ -0,0 +1,22 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + + +class StepsToday extends StatelessWidget { + int count; + + StepsToday(this.count); + + @override + Widget build(BuildContext context) { + return Container( + child: Column( + children: [ + Text("Steps today", style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 20), textAlign: TextAlign.center), + Text(count.toString(), style: TextStyle(color: Colors.green, fontWeight: FontWeight.bold, fontSize: 40), textAlign: TextAlign.center) + ], + ) + ); + } + +} \ No newline at end of file