Flutter Clone of Kotlin Multiplatform Votlin App

admin

Flutter clone of Kotlin Multiplatform Votlin App.

Flutter Votlin App

Flutter clone of Kotlin Multiplatform Votlin App -> https://github.com/sergiocasero/votlin-app

Kotlin multiplatform is great, but Flutter can be a fantastic alternative!

This is a small petshop with a master/detail structure. It lists the talks from Extremadura Digital Day event.

image image

Getting Started with Flutter

For help getting started with Flutter, view the online documentation.

If you want to find how amazing is Flutter, take a look at this repo -> https://github.com/Solido/awesome-flutter

Project architecture

There are some architectures and patterns that are followed by the great community of Flutter:

  • Redux
  • Bloc pattern
  • Scope Model
  • Inherited Widget
  • Model View Controller
  • Model View Intent

A great resource related to flutter architectures -> https://github.com/brianegan/flutter_architecture_samples

Flutter community, for some reason, by the moment, is ignoring Clean Architecture… so, why not give a oportunity to clean architecture in flutter?

This project try to follow the clean architecture structure. Some related resources:

http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

https://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/

In this project we have three modules:

flutter_votlin_app -> Flutter main module. Also contains the user interface.

domain -> Business layer. Flutter dependences not allowed! Only dart dependencies allowed!

data -> Data sources layer. Flutter dependences not allowed! Only dart dependencies allowed!

But… is Clean Architecture the best architecture for Flutter?

Absolutely not. This is only a petshop project for experiment with Clean Architecture and with Flutter framework. We don’t know what is the best architecture for Flutter. The only way to find it is experimenting!

How to build and run

Building the code

  • Use your favorite IDE. Flutter supports different IDE
  • If you don’t have Flutter installed, follow the official docs: https://flutter.io/docs/get-started/install
  • If your IDE shows some errors, don’t forget to execute command flutter packages get in domain and data modules

Running the Android app

We have created some kind of flavors in flutter app, inspired by this post

Actually, we have added configuration for each flavor in data layer

Probably we can find better ways, but this is only the beginning.

To run the android app:

  • Execute flutter run lib/<main_file>. For instance, to run mock flavor, execute flutter run lib/main-mock.dart.
  • If you execute flutter run, mock flavor is executed

Flavor

Description

Main file

MOCK

Offline version, mocked with a json file

main-mock.dart

LOCALHOST_EMULATOR

Online version, against localhost, running in the emulator. Json server required

main-localhost_emulator.dart

Running the iOS app

TODO

Running the backend

Mock flavor does not backend, because we get the information from hardcoded json.

MOCK

No backend required, we get the information from hardcoded json

LOCALHOST

Running tests

Credit (github url) : https://github.com/worldline-spain/flutter_votlin_app

Next Article : https://flutterappdev.com/2019/01/18/contains-screenshot-blur-flutter-mobile-app-development/

Leave a Comment