I am embarking on a new quest; building a simple, great looking, and fast third party Android app competing with the official NissanConnect EV app.
This is part 2 of that quest. After finishing the Dart library, I called it dartcarwings, for using the Carwings API, implementing the app using Flutter began. I have implemented several apps already using Flutter and although stuff has changed along the way I still love Flutter. It makes implementing an app easy and a joy at the same time. The result is often a beautiful app with little effort. That makes Flutter special. It’s so much better than the Android SDK. Which seems dated in many regards. I’m completely sure that Flutter is the SDK for Google’s future Android replacement Fuchsia OS. It is not marketed as such yet. Right now I think it is the best way to make an Android app. What is even better, now that Flutter has matured as a project, is the availability of plugins for native operations. There are plugins for almost anything. Even better… writing a plugin yourself is very straight forward.
I’m not going into too much detail about the implementation of the app. You can poke at the source code yourself at Gitlab. The app consists of a login page, a main page with an app drawer, two separate pages for climate- and charging-control. There is also a preferences page. The main page is the most important part. It is a Dashboard of sorts giving you the most important information first.
The app is called ‘My Leaf’ and is available on Google Play. It’s completely free and open source. An iOS version will maybe come later; it shouldn’t be too difficult because of Flutter ;)
A side-by-side comparison of ‘My Leaf’ and the official NissanConnect EV app (landing screens);
As apparent by the comparison ‘My Leaf’ tries to pack the most important information first. With the official app you’d have to traverse multiple screens to get the same information.
‘My leaf’ is using these 6 dependencies/plugins;
- shared_preferences - a Flutter plugin for saving settings using Shared Preferences on Android. It also supports iOS NSUserDefaults
- json_serializeable - a JSON serializer I’m using to save/load Dart objects with the above shared_preferences plugin
- url_launcher - a Flutter plugin for launching URI on both Android and iOS. Used mostly for launching Google Maps in my case
- flutter_payments - A Flutter plugin for having in-app purchases. I use this for handling donations from those willing to donate ;)
- dartcarwings - my Dart library for utilizing the Carwings API
- blowfish_native - my own Flutter plugin for doing Blowfish encryption natively with Android and iOS. There’s no native Blowfish support within Dart
Other than that the app is pure Dart and Flutter.
I hope you like the result and you want to try it for yourself. Feedback is very much welcome!
Links and references;