Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/VictorUvarov/provider_architecture_template
A production ready flutter application template for the provider architecture.
https://github.com/VictorUvarov/provider_architecture_template
architecture boilerplate-front-end dart flutter flutter-demo flutter-examples provider-architecture
Last synced: 7 days ago
JSON representation
A production ready flutter application template for the provider architecture.
- Host: GitHub
- URL: https://github.com/VictorUvarov/provider_architecture_template
- Owner: VictorUvarov
- License: mit
- Archived: true
- Created: 2019-08-10T20:46:27.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-10-23T02:44:31.000Z (about 4 years ago)
- Last Synced: 2024-08-01T12:19:48.845Z (3 months ago)
- Topics: architecture, boilerplate-front-end, dart, flutter, flutter-demo, flutter-examples, provider-architecture
- Language: Dart
- Homepage:
- Size: 1.11 MB
- Stars: 165
- Watchers: 22
- Forks: 55
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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:
- [Filled Stacks Website](https://www.filledstacks.com/)
- [Filled Stacks Github Tutorials](https://github.com/FilledStacks/flutter-tutorials)
- [Filled Stacks YouTube](https://www.youtube.com/channel/UC2d0BYlqQCdF9lJfydl_02Q)
- [Filled Stacks Slack](https://filledstacks.slack.com/join/shared_invite/enQtNjY0NTQ3MTYwMzEwLTJjZmU0ODRhOTA5ZGE3MTUxOTUzODdlNzFjMDg0ZGU4ZDQzMzVlMDQ0MzYxZWNhOWViOGI1NjZiZDE1YTQ3NGM)## Setup
Generate your platform specific folders with kotlin/swift
```bash
flutter create .
```or generate your platform specific folders with objc/java
```bash
flutter create -i objc -a java .
```Since this project uses 3 locales add this to your info.plist
```plist
CFBundleLocalizationses
ru
en```
Generate the launcher icon (optional)
```bash
flutter pub get && pub run flutter_launcher_icons:main
```## Folder structure
```bash
.
├── 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](https://pub.dev/packages/derry) (optional) to avoid typing the above commands manually## Adding support for another language
- Find the language local code from here [codes](https://en.wikipedia.org/wiki/List_of_ISO_639-1_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](https://pub.dev/packages/intl) package. An example on how to do so can be found [here](https://github.com/flutter/website/tree/master/examples/internationalization/intl_example)## 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```sh
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