My Subscriptions is an application made entirely in Flutter and that has helped me to get into the development on this new Google platform. My Subscriptions is an application that is designed to add our different subscriptions to different services, Spotify, Netflix, Apple. Music, Amazon, etc ... and that through the application we have a more effective and direct control over the dates of renewal of these services and the expense we make in the different services to which we are subscribed. These expenses are reflected in the application through different graphs, both monthly, annual and total divided by dates and subscription types.
Flutter is a framework, which Google launched a few years ago, and which is becoming increasingly important in the world of mobile development. The good part of this framework is that it allows us to reuse a common code base for the developments we make for Android and IOS. As programming language uses Dart, one of the many languages that Google develops throughout its existence and that before the departure of Flutter was rather a stranger. After Flutter, its use has risen in parallel to the increase in developments made for Flutter.
I come from development for Android and IOS, with languages like Kotlin and Swift and always working in native with the different resources that facilitate both Google and Apple for this work. In my development background I have almost 9-10 years of experience and with applications made for both Android and IOS and in which I have touched almost all the fundamental aspects of both worlds and some something more concrete and in depth.
From my point of view, Dart needs to implement many of the things that Kotlin or Swift, and more and more new languages, include such as null types, enumerators with much greater entity and possibility of use, more functions for the collections that bring them closer to functional programming, a Kotlin When vitamin switch or Swift switch itself, among what is most lacking.
As for Flutter as a development framework, I think that although it is true that the declarative paradigm for the creation of interfaces is ideal for this, just as Apple has implemented with Swift UI or Google itself on Android with Jetpack Compose, and It makes the creation of UI delightful. The problem, from my point of view, is the little support that Flutter gives natively to features that in mobile development are on the agenda, such as Background services when applications are not active, support for hardware access to the terminals in an easy and fast way, I know that it can be done from the Channels, but I think they should have created more plugins that already came by default to be used quickly.
In this test application I used different functions that I wanted to find out how they behaved and how to do them in Flutter as:
- Local persistence in databases.
- Local notifications.
- Execution of services in the background with periodic tasks from time to time, whether or not the application is running.
- Analytics integration.
- Admob integration.
- Introduction to established or more usual development patterns in this framework, Bloc.
A version of the application is uploaded to Google Play and you can download it to try from this link.
The code of this repository is fully functional although for you to compile and work you must add your Admob ids in the Domain layer, at Services class enabled for this purpose. And you must also add the google-services.json configuration file that is created when you register a project in Firebase for Analytics.
Any questions about it or anything that can be of help you just have to contact me and I will be happy to talk with you.
MIT License
Copyright (c) 2020 antocara
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.