diff --git a/lib/home.dart b/lib/home.dart index 3d4022b..25f4d35 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/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'; class HomeScreen extends StatefulWidget { const HomeScreen({Key? key}) : super(key: key); @@ -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/model/steps_series.dart b/lib/model/steps_series.dart new file mode 100644 index 0000000..faf5958 --- /dev/null +++ b/lib/model/steps_series.dart @@ -0,0 +1,6 @@ +class StepsSeries { + final DateTime date; + final int steps; + + StepsSeries(this.date, this.steps); +} \ No newline at end of file diff --git a/lib/steps.dart b/lib/steps.dart deleted file mode 100644 index 061f763..0000000 --- a/lib/steps.dart +++ /dev/null @@ -1,10 +0,0 @@ -import 'package:flutter/material.dart'; - -class StepsPage extends StatelessWidget { - const StepsPage({ Key? key }) : super(key: key); - - @override - Widget build(BuildContext context) { - return Text("Data Page"); - } -} \ No newline at end of file diff --git a/lib/data.dart b/lib/view/data_page.dart similarity index 100% rename from lib/data.dart rename to lib/view/data_page.dart diff --git a/lib/map.dart b/lib/view/map_page.dart similarity index 100% rename from lib/map.dart rename to lib/view/map_page.dart diff --git a/lib/settings.dart b/lib/view/settings_page.dart similarity index 100% rename from lib/settings.dart rename to lib/view/settings_page.dart diff --git a/lib/view/steps/steps_chart.dart b/lib/view/steps/steps_chart.dart new file mode 100644 index 0000000..ecb35e1 --- /dev/null +++ b/lib/view/steps/steps_chart.dart @@ -0,0 +1,29 @@ +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 { + 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 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 new file mode 100644 index 0000000..2c2c3c9 --- /dev/null +++ b/lib/view/steps/steps_page.dart @@ -0,0 +1,40 @@ +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); + + @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 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 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: