From f59d7118ed950765c85a305608884d80b73b4887 Mon Sep 17 00:00:00 2001 From: Ben Goldsworthy Date: Wed, 14 Oct 2020 13:43:09 +0100 Subject: [PATCH 1/3] Add Firebase messaging (Android-only, foreground-only) --- android/app/build.gradle | 5 +- android/app/src/main/AndroidManifest.xml | 1 + .../co/localspend/localspend/Application.java | 21 +++ android/build.gradle | 3 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- lib/env/dev.json | 4 +- lib/main.dart | 37 +++-- pubspec.lock | 138 +++++++++++++----- pubspec.yaml | 1 + 9 files changed, 164 insertions(+), 48 deletions(-) create mode 100644 android/app/src/main/java/uk/co/localspend/localspend/Application.java diff --git a/android/app/build.gradle b/android/app/build.gradle index 865c574..09054d7 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -8,7 +8,7 @@ if (localPropertiesFile.exists()) { def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") + throw GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') @@ -58,4 +58,7 @@ dependencies { testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + implementation 'com.google.firebase:firebase-messaging:20.3.0' } + +apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 53c13db..deba7d1 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -14,6 +14,7 @@ FlutterApplication and put your custom class here. --> message) async { + print('onMessage: $message'); + }, + onLaunch: (Map message) async { + print('onLaunch: $message'); + }, + onResume: (Map message) async { + print('onResume: $message'); + }, + ); + + // Required on iOS; non-op on Android. + _firebaseMessaging.requestNotificationPermissions(); + + return MaterialApp( debugShowCheckedModeBanner: false, localizationsDelegates: [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], - supportedLocales: [Locale("en")], - title: "Local Spend Tracker", - theme: new ThemeData( + supportedLocales: [Locale('en')], + title: 'Local Spend Tracker', + theme: ThemeData( primarySwatch: Colors.blueGrey, ), routes: { - "/HomePage": (BuildContext context) => HomePage(), - "/LoginPage": (BuildContext context) => LoginPage(), + '/HomePage': (BuildContext context) => HomePage(), + '/LoginPage': (BuildContext context) => LoginPage(), '/MapPage': (BuildContext context) => MapPage(), - "/ReceiptPage": (BuildContext context) => ReceiptPage2(), - "/MorePage": (BuildContext context) => MorePage(), + '/ReceiptPage': (BuildContext context) => ReceiptPage2(), + '/MorePage': (BuildContext context) => MorePage(), }, home: SplashScreen(), ); diff --git a/pubspec.lock b/pubspec.lock index 0b7ae06..d772738 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -14,7 +14,7 @@ packages: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "0.39.15" + version: "0.39.14" args: dependency: transitive description: @@ -63,21 +63,21 @@ packages: name: build_resolvers url: "https://pub.dartlang.org" source: hosted - version: "1.3.10" + version: "1.3.11" build_runner: dependency: "direct dev" description: name: build_runner url: "https://pub.dartlang.org" source: hosted - version: "1.10.0" + version: "1.10.1" build_runner_core: dependency: transitive description: name: build_runner_core url: "https://pub.dartlang.org" source: hosted - version: "5.2.0" + version: "6.0.1" built_collection: dependency: transitive description: @@ -147,7 +147,7 @@ packages: name: code_builder url: "https://pub.dartlang.org" source: hosted - version: "3.4.0" + version: "3.5.0" collection: dependency: transitive description: @@ -204,6 +204,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" file: dependency: transitive description: @@ -211,6 +218,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.2.1" + firebase: + dependency: transitive + description: + name: firebase + url: "https://pub.dartlang.org" + source: hosted + version: "7.3.0" + firebase_core: + dependency: transitive + description: + name: firebase_core + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.0+1" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" + firebase_messaging: + dependency: "direct main" + description: + name: firebase_messaging + url: "https://pub.dartlang.org" + source: hosted + version: "7.0.3" fixnum: dependency: transitive description: @@ -248,7 +290,7 @@ packages: name: flutter_plugin_android_lifecycle url: "https://pub.dartlang.org" source: hosted - version: "1.0.8" + version: "1.0.11" flutter_test: dependency: "direct dev" description: flutter @@ -272,14 +314,14 @@ packages: name: google_maps_flutter url: "https://pub.dartlang.org" source: hosted - version: "0.5.28+1" + version: "0.5.33" google_maps_flutter_platform_interface: dependency: transitive description: name: google_maps_flutter_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.4" graphs: dependency: transitive description: @@ -293,7 +335,7 @@ packages: name: html url: "https://pub.dartlang.org" source: hosted - version: "0.14.0+3" + version: "0.14.0+4" http: dependency: "direct main" description: @@ -342,14 +384,14 @@ packages: name: json_annotation url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "3.1.0" json_serializable: dependency: "direct main" description: name: json_serializable url: "https://pub.dartlang.org" source: hosted - version: "3.3.0" + version: "3.5.0" linkify: dependency: transitive description: @@ -384,7 +426,7 @@ packages: name: mime url: "https://pub.dartlang.org" source: hosted - version: "0.9.6+3" + version: "0.9.7" node_interop: dependency: transitive description: @@ -426,7 +468,14 @@ packages: name: path_provider_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.3" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4+1" pedantic: dependency: "direct dev" description: @@ -441,20 +490,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.2.1" - platform_detect: - dependency: transitive - description: - name: platform_detect - url: "https://pub.dartlang.org" - source: hosted - version: "1.4.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.3" pool: dependency: transitive description: @@ -496,21 +538,21 @@ packages: name: sa_anicoto url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.3" sa_multi_tween: dependency: transitive description: name: sa_multi_tween url: "https://pub.dartlang.org" source: hosted - version: "1.1.1" + version: "1.1.2" sa_stateless_animation: dependency: transitive description: name: sa_stateless_animation url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.0.3" sa_v1_migration: dependency: transitive description: @@ -524,14 +566,14 @@ packages: name: shared_preferences url: "https://pub.dartlang.org" source: hosted - version: "0.5.8" + version: "0.5.12" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux url: "https://pub.dartlang.org" source: hosted - version: "0.0.2+1" + version: "0.0.2+2" shared_preferences_macos: dependency: transitive description: @@ -553,13 +595,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.2+7" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+1" shelf: dependency: transitive description: name: shelf url: "https://pub.dartlang.org" source: hosted - version: "0.7.7" + version: "0.7.9" shelf_web_socket: dependency: transitive description: @@ -573,7 +622,7 @@ packages: name: simple_animations url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" + version: "2.2.2" sky_engine: dependency: transitive description: flutter @@ -585,7 +634,7 @@ packages: name: source_gen url: "https://pub.dartlang.org" source: hosted - version: "0.9.6" + version: "0.9.7+1" source_span: dependency: transitive description: @@ -627,7 +676,14 @@ packages: name: supercharged url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.10.0" + supercharged_dart: + dependency: transitive + description: + name: supercharged_dart + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" term_glyph: dependency: transitive description: @@ -662,7 +718,7 @@ packages: name: url_launcher url: "https://pub.dartlang.org" source: hosted - version: "5.5.0" + version: "5.7.2" url_launcher_linux: dependency: transitive description: @@ -676,21 +732,28 @@ packages: name: url_launcher_macos url: "https://pub.dartlang.org" source: hosted - version: "0.0.1+7" + version: "0.0.1+8" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.7" + version: "1.0.8" url_launcher_web: dependency: transitive description: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "0.1.2" + version: "0.1.4+1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+1" vector_math: dependency: transitive description: @@ -712,6 +775,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "1.7.3" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index fb53942..90a5df5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -28,6 +28,7 @@ dependencies: simple_animations: ^2.2.1 google_maps_flutter: ^0.5.20+5 json_serializable: ^3.3.0 + firebase_messaging: ^7.0.0 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^0.1.2 From 9381458d7927cd935ed811773ad61a7570e33be5 Mon Sep 17 00:00:00 2001 From: Rumperuu Date: Sat, 20 Mar 2021 09:40:50 +0000 Subject: [PATCH 2/3] Update readme --- README.md | 114 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 84 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 3580c7d..beb9dab 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,101 @@ -# LocalSpend Mobile App. +# LocalSpend (Mobile App.) -This repo. contains the mobile application for use with the LocalSpend system, -using Flutter. +Looking to discover if the value of spending local can be measured, understood and shown. -## Getting Started +This repository contains the mobile application for the LocalSpend system. See also: -Follow these steps to get the project up-and-running: +* the [Web application](https://github.com/Pear-Trading/Foodloop-Web); and +* the [server](https://github.com/Pear-Trading/Foodloop-Server). -1. Install [Flutter](https://flutter.dev/docs/get-started/install) -1. Set up [your editor](https://flutter.dev/docs/get-started/editor) - 1. If this is your first Flutter project, install the [Flutter SDK](https://flutter.dev/docs/get-started/test-drive) -1. Add the line `flutter.sdk=⟨ path to Flutter SDK ⟩` to the file `androud/local.properties` +## Table of Contents -## Building +* [Tech Stack](#tech-stack) +* [Features](#features) +* [Installation](#installation) +* [Configuration](#configuration) +* [Usage](#usage) +* [Testing](#testing) +* [Code Formatting](#code-formatting) +* [Documentation](#documentation) +* [Acknowledgments](#acknowledgements) +* [License](#license) +* [Contacr](#contact) -To build an apk from dev, use: -``` -flutter build apk -t lib/main_dev.dart -``` +## Technology Stack -## Debugging +The mobile app. is written in [Dart](https://dart.dev/). -``` -// debug +| Technology | Description | Link | +|-------------|---------------------------------|---------------------| +| Flutter | Cross-platform mobile framework | [Link][flutter] | + +[flutter]: https://flutter.dev/ + +## Features + +This mobile app. provides: + +- user authentication; and +- transaction logging. + +## Installation + +1. Install [Flutter](https://flutter.dev/docs/get-started/install); +1. if this is your first Flutter project, install the [Flutter SDK](https://flutter.dev/docs/get-started/test-drive); +1. set up [your editor](https://flutter.dev/docs/get-started/editor): + - we recommend using [Android Studio](https://developer.android.com/studio). +1. add the line `flutter.sdk=⟨ path to Flutter SDK ⟩` to the file `android/local.properties`. + +## Configuration + +App. configuration settings are found in `pubspec.yaml`. + +Build settings are found in the `android/` directory, in the `build.gradle`, `gradle.properties` and `settings.gradle` files. + +## Usage + +### Development + +To activate debugging, add the following import statement: + +```dart import 'package:flutter/foundation.dart'; -debugPrint('$foo'); ``` -## Further Reading +After that, you can generate debugging output using `debugPrint()`. -A few resources to get you started if this is your first Flutter project: +### Production -- [Lab: Write your first Flutter app](https://flutter.io/docs/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://flutter.io/docs/cookbook) +Run `flutter build apk -t lib/main_dev.dart` to generate an APK file. -For help getting started with Flutter, view our -[online documentation](https://flutter.io/docs), which offers tutorials, -samples, guidance on mobile development, and a full API reference. +## Testing -https://github.com/putraxor/flutter-login-ui -https://github.com/pbirdsall/medium_splash_tokenauth +TODO + +## Code Formatting + +TODO + +## Documentation + +TODO + +## Acknowledgements + +LocalLoop is the result of collaboration between the [Small Green Consultancy](http://www.smallgreenconsultancy.co.uk/), [Shadowcat Systems](https://shadow.cat/), [Independent Lancaster](http://www.independent-lancaster.co.uk/) and the [Ethical Small Traders Association](http://www.lancasteresta.org/). + +## License + +This project is released under the [MIT license](https://mit-license.org/). + +## Contact + +| Name | Link(s) | +|----------------|-------------------| +| Mark Keating | [Email][mkeating] | +| Michael Hallam | [Email][mhallam] | + +[mkeating]: mailto:m.keating@shadowcat.co.uk +[mhallam]: mailto:info@lancasteresta.org -Related repos: -- [`Pear-Trading/FoodLoop-Web`](https://github.com/Pear-Trading/FoodLoop-Web) -- [`Pear-Trading/Foodloop-Server`](https://github.com/Pear-Trading/Foodloop-Server) \ No newline at end of file From ceafbb279f411e969f951a3b15a7df1d1f9c4b76 Mon Sep 17 00:00:00 2001 From: Rumperuu Date: Sat, 20 Mar 2021 09:43:18 +0000 Subject: [PATCH 3/3] Fix typo --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index beb9dab..bd2cf87 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ This repository contains the mobile application for the LocalSpend system. See a * [Documentation](#documentation) * [Acknowledgments](#acknowledgements) * [License](#license) -* [Contacr](#contact) +* [Contact](#contact) ## Technology Stack @@ -97,5 +97,3 @@ This project is released under the [MIT license](https://mit-license.org/). [mkeating]: mailto:m.keating@shadowcat.co.uk [mhallam]: mailto:info@lancasteresta.org - -