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.
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
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/
To experiment with project architecture, we are going to implement different approaches in different branches
Branch | Description |
---|---|
architecture/multiple_packages_mvp | Multiple packages, model view presenter |
architecture/multiple_packages_scoped_model | Multiple packages, scoped model |
architecture/multiple_packages_stream_builder | Multiple packages, stream builder |
architecture/single_package_stream_builder | Single package, stream_builder |
architecture/single_package_platform_channel | Single package, platform channel |
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!
To experiment with animations, we are going to create different branches
Branch | Description |
---|---|
animations/animated_builder | Experiment with animated builder widget |
- Flare
- Lottie
- 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
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, executeflutter 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 |
TODO
Mock flavor does not backend, because we get the information from hardcoded json.
No backend required, we get the information from hardcoded json
- Install node and json-server
- Copy this file to arbitrary folder
- Run
./json-server schedule.json
TODO
- Thanks to @sergioch23 and @Dany4794, take a look to Votlin app -> https://github.com/sergiocasero/votlin-app
- Thanks to @GDGBarcelona and its organizers, Flutter meetups in Barcelona are really helpful
- Thanks to great people from Flutter Community:
- @brianegan -> https://github.com/brianegan
- @norbertkozsir -> https://github.com/Norbert515
- @ThomasBurkhartB -> https://github.com/escamoteur
- @DidierBoelens -> https://github.com/boeledi
- @SergiAndReplace -> https://github.com/sergiandreplace
Feel free to open issues or make a pull request. All contributions are welcome!