All Projects โ†’ VictorUvarov โ†’ Provider_architecture_template

VictorUvarov / Provider_architecture_template

Licence: mit
A production ready flutter application template for the provider architecture.

Programming Languages

dart
5743 projects

Projects that are alternatives of or similar to Provider architecture template

Restapimvvm
App that interacts with a Rest Api. Architecture is MVVM.
Stars: โœญ 130 (-12.16%)
Mutual labels:  architecture
Android Modular Architecture
๐Ÿ“š Sample Android Components Architecture on a modular word focused on the scalability, testability and maintainability written in Kotlin, following best practices using Jetpack.
Stars: โœญ 2,048 (+1283.78%)
Mutual labels:  architecture
Weekly.manong.io
็ ๅ†œๅ‘จๅˆŠ - ๅฒไธŠๆœ€ๅ…จ็š„็ผ–็จ‹ๅญฆไน ่ต„ๆ–™ๅˆ้›†๏ผˆๆŒ็ปญๆ›ดๆ–ฐ๏ผ‰
Stars: โœญ 1,796 (+1113.51%)
Mutual labels:  architecture
Armscomponent
๐Ÿ“ฆ A complete android componentization solution, powered by MVPArms (MVPArms ๅฎ˜ๆ–นๅฟซ้€Ÿ็ป„ไปถๅŒ–ๆ–นๆกˆ).
Stars: โœญ 1,664 (+1024.32%)
Mutual labels:  architecture
Mosby Conductor
Plugin for conductor to integrate Mosby
Stars: โœญ 134 (-9.46%)
Mutual labels:  architecture
Android Base Mvp
Android Base MVP Concept with RXJava, Dagger, Event Bus, Retrofit, Glide, OkHTTP
Stars: โœญ 141 (-4.73%)
Mutual labels:  architecture
Generator Android Mvp Starter
[Yeoman Generator] Generate MVP Architecture for Android App using https://git.io/v9Ujz
Stars: โœญ 129 (-12.84%)
Mutual labels:  architecture
Kingly
Zero-cost state-machine library for robust, testable and portable user interfaces (most machines compile ~1-2KB)
Stars: โœญ 147 (-0.68%)
Mutual labels:  architecture
Pipelinr
PipelinR is a lightweight command processing pipeline โ โ‡ข โ โ‡ข โ for your Java awesome app.
Stars: โœญ 134 (-9.46%)
Mutual labels:  architecture
Reference Architecture
TELUS Reference Architecture Documentation
Stars: โœญ 145 (-2.03%)
Mutual labels:  architecture
Swift Cleanarchitecture
Simple Swift project applying concepts inspired on the Clean Architecture
Stars: โœญ 133 (-10.14%)
Mutual labels:  architecture
Go Clean Architecture
๐Ÿ‘จโ€๐Ÿ’ป REST API example, built by following Uncle Bobโ€™s clean architecture principles
Stars: โœญ 133 (-10.14%)
Mutual labels:  architecture
Cleanarchitecture.workerservice
A solution template using Clean Architecture for building a .NET Core Worker Service.
Stars: โœญ 142 (-4.05%)
Mutual labels:  architecture
Cocktailapp
Cocktails Android App with Clean Architecture, MVVM , Retrofit, Coroutines, Navigation Components , Room, Dagger Hilt, Cache Strategy and Coroutines Flow
Stars: โœญ 128 (-13.51%)
Mutual labels:  architecture
Suas Ios
Unidirectional data flow architecture implementation for iOS, macOS, tvOS and watchOS
Stars: โœญ 147 (-0.68%)
Mutual labels:  architecture
Swiftdux
Predictable state management for SwiftUI applications.
Stars: โœญ 130 (-12.16%)
Mutual labels:  architecture
Style
[Deprecated], Not maintain anymore. A live wallpaper project
Stars: โœญ 141 (-4.73%)
Mutual labels:  architecture
Pytorch Vae
A Collection of Variational Autoencoders (VAE) in PyTorch.
Stars: โœญ 2,704 (+1727.03%)
Mutual labels:  architecture
Api Guidelines
adidas group API design guidelines
Stars: โœญ 147 (-0.68%)
Mutual labels:  architecture
Android Clean Architecture Boilerplate
Apply clean architecture on Android
Stars: โœญ 141 (-4.73%)
Mutual labels:  architecture

provider_start

A production ready flutter application template for the provider architecture.

Inspiration

  • This project is a starting point for a Flutter application using the provider architecture.
  • This project heavily uses the flutter tutorials and snippets of the filled stacks YouTube channel.
  • Feel free to send in Pull Requests to improve the application.

Filled Stacks Links:

Setup

Generate your platform specific folders with kotlin/swift

flutter create .

or generate your platform specific folders with objc/java

flutter create -i objc -a java .

Since this project uses 3 locales add this to your info.plist

<key>CFBundleLocalizations</key>
<array>
    <string>es</string>
    <string>ru</string>
    <string>en</string>
</array>

Generate the launcher icon (optional)

flutter pub get && pub run flutter_launcher_icons:main

Folder structure

.
โ”œโ”€โ”€ core
โ”‚   โ”œโ”€โ”€ constant
โ”‚   โ”œโ”€โ”€ data_sources
โ”‚   โ”œโ”€โ”€ enums
โ”‚   โ”œโ”€โ”€ exceptions
โ”‚   โ”œโ”€โ”€ localization
โ”‚   โ”œโ”€โ”€ managers
โ”‚   โ”œโ”€โ”€ mixins
โ”‚   โ”œโ”€โ”€ models
โ”‚   โ”œโ”€โ”€ repositories
โ”‚   โ”œโ”€โ”€ services
โ”‚   โ””โ”€โ”€ utils
โ””โ”€โ”€ ui
    โ”œโ”€โ”€ shared
    โ”œโ”€โ”€ views & viewModels
    โ””โ”€โ”€ widgets

Features

Master branch

  • [x] bottom navigation bar
  • [x] intuitive UI router
  • [x] script for auto formatting on commits
  • [x] localization
  • [x] validation mixin for forms
  • [x] json serialization
  • [x] auth service example
  • [x] dialog service
  • [x] connectivity service
  • [x] hardware info service
  • [x] http service
  • [x] navigation service
  • [x] key storage service
  • [x] local storage service (NoSQL)
  • [x] system light/dark theme support
  • [x] platform adaptive widgets
  • [x] life cycle manager to start/stop background services
  • [x] app settings launcher
  • [x] custom fonts
  • [x] custom app icons
  • [x] custom native splash screen
  • [x] snack bar service
  • [x] unit tests
  • [x] view model tests
  • [ ] widget tests
  • [ ] responsive views

Geolocator branch

  • [x] location service
  • [x] location permission service

Example pages included

  • Home View (Renders a list of posts fetched from JSON place holder API)
  • Login View (Form that simulates user login and form validation)
  • Main View (View that handles tab navigation)
  • Splash View (Initial loading screen that uses flare animations)
  • Post Details (Dynamic view that loads the post's user information)
  • Settings View (Example view that launches app settings and signs out user)

Getting started

  • run chmod +x ./format.sh && ./format.sh to setup git pre commit formatting or
  • run chmod +x ./manual_format.sh and run ./manual_format.sh whenever you want to format the dart code
  • run flutter packages pub run build_runner build --delete-conflicting-outputs if you plan to add/change any serializers once
  • run flutter packages pub run build_runner watch --delete-conflicting-outputs if you plan to add/change any serializers multiple times
  • Setup derry (optional) to avoid typing the above commands manually

Adding support for another language

  • Find the language local code from here codes
  • Inside of lib/local_setup.dart add the local code to supportedLocalCodes
  • Add the local code to the CFBundleLocalizations array in ios/Runner/Info.plist
  • Create a <local>.json file under assets/lang/ and fill out every value for your language
  • Run flutter clean inside you lib apps directory if flutter complains
  • There is also a different way to implement locals using the intl package. An example on how to do so can be found here

Adding app icon

  • Change icon assets/images/logo.png to another image
  • If new icon has a different path update flutter_icons: in the pubspec.yaml file
  • Run flutter pub get and then flutter pub run flutter_launcher_icons:main

Adding another route

  • create your view and view model in lib/ui/views/<view-folder>/
  • add your view to the list of routes in lib/ui/router.dart
  • generate the new router with
flutter packages pub run build_runner build --delete-conflicting-outputs

Adding another model

Simple model

  • Create a <YOUR_MODEL>.dart under core/models/<YOUR_MODEL>/<YOUR_MODEL>.dart
  • Copy the AlertRequest from core/models/alert_request/alert_request.dart and replace all the class model names with <YOUR_MODEL>
  • Add your own custom getter values.
  • Add a part file. Ex: <YOUR_MODEL>.g.dart above the class
  • Run flutter packages pub run build_runner build --delete-conflicting-outputs to build your new model

Serializable model

  • Create a <YOUR_MODEL>.dart under core/models/<YOUR_MODEL>/<YOUR_MODEL>.dart
  • Copy the User from core/models/user/user.dart and replace all the class model names with <YOUR_MODEL>
  • Add your own custom getter values.
  • Add <YOUR_MODEL> to the list in @SerializersFor class constructor found under core/models/serializer.dart
  • Run flutter packages pub run build_runner build --delete-conflicting-outputs to build your new model
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].