Need help with provider_architecture_template?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

VictorUvarov
147 Stars 50 Forks MIT License 182 Commits 12 Opened issues

Description

A production ready flutter application template for the provider architecture.

Services available

!
?

Need anything else?

Contributors list

# 107,226
Dart
Flutter
bottomn...
bottomn...
154 commits
# 343,167
Flutter
adaptiv...
Android
Dart
2 commits
# 14,842
Dart
HTML
Flutter
tutoria...
1 commit
# 70,036
Flutter
Dart
rxdart
HTML
1 commit

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

CFBundleLocalizations

    es
    ru
    en

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
    .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//
  • 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
    .dart
    under
    core/models//.dart
  • Copy the
    AlertRequest
    from
    core/models/alert_request/alert_request.dart
    and replace all the class model names with
    
    
  • Add your own custom getter values.
  • Add a part file. Ex:
    .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
    .dart
    under
    core/models//.dart
  • Copy the
    User
    from
    core/models/user/user.dart
    and replace all the class model names with
    
    
  • Add your own custom getter values.
  • Add
     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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.