A boilerplate project created in flutter using MobX and Provider.

Overview

Boilerplate Project

A boilerplate project created in flutter using MobX and Provider. Boilerplate supports both web and mobile, clone the appropriate branches mentioned below:

Getting Started

The Boilerplate contains the minimal implementation required to create a new library or project. The repository code is preloaded with some basic components like basic app architecture, app theme, constants and required dependencies to create a new project. By using boiler plate code as standard initializer, we can have same patterns in all the projects that will inherit it. This will also help in reducing setup & development time by allowing you to use same code pattern and avoid re-writing from scratch.

How to Use

Step 1:

Download or clone this repo by using the link below:

https://github.com/zubairehman/flutter-boilerplate-project.git

Step 2:

Go to project root and execute the following command in console to get the required dependencies:

flutter pub get 

Step 3:

This project uses inject library that works with code generation, execute the following command to generate files:

flutter packages pub run build_runner build --delete-conflicting-outputs

or watch command in order to keep the source code synced automatically:

flutter packages pub run build_runner watch

Hide Generated Files

In-order to hide generated files, navigate to Android Studio -> Preferences -> Editor -> File Types and paste the below lines under ignore files and folders section:

*.inject.summary;*.inject.dart;*.g.dart;

In Visual Studio Code, navigate to Preferences -> Settings and search for Files:Exclude. Add the following patterns:

**/*.inject.summary
**/*.inject.dart
**/*.g.dart

Boilerplate Features:

  • Splash
  • Login
  • Home
  • Routing
  • Theme
  • Dio
  • Database
  • MobX (to connect the reactive data of your application with the UI)
  • Provider (State Management)
  • Encryption
  • Validation
  • Code Generation
  • User Notifications
  • Logging
  • Dependency Injection
  • Dark Theme Support (new)
  • Multilingual Support (new)
  • Provider example (new)

Up-Coming Features:

  • Connectivity Support
  • Background Fetch Support

Libraries & Tools Used

Folder Structure

Here is the core folder structure which flutter provides.

flutter-app/
|- android
|- build
|- ios
|- lib
|- test

Here is the folder structure we have been using in this project

lib/
|- constants/
|- data/
|- stores/
|- ui/
|- utils/
|- widgets/
|- main.dart
|- routes.dart

Now, lets dive into the lib folder which has the main code for the application.

1- constants - All the application level constants are defined in this directory with-in their respective files. This directory contains the constants for `theme`, `dimentions`, `api endpoints`, `preferences` and `strings`.
2- data - Contains the data layer of your project, includes directories for local, network and shared pref/cache.
3- stores - Contains store(s) for state-management of your application, to connect the reactive data of your application with the UI. 
4- ui — Contains all the ui of your project, contains sub directory for each screen.
5- util — Contains the utilities/common functions of your application.
6- widgets — Contains the common widgets for your applications. For example, Button, TextField etc.
7- routes.dart — This file contains all the routes for your application.
8- main.dart - This is the starting point of the application. All the application level configurations are defined in this file i.e, theme, routes, title, orientation etc.

Constants

This directory contains all the application level constants. A separate file is created for each type as shown in example below:

constants/
|- app_theme.dart
|- dimens.dart
|- endpoints.dart
|- preferences.dart
|- strings.dart

Data

All the business logic of your application will go into this directory, it represents the data layer of your application. It is sub-divided into three directories local, network and sharedperf, each containing the domain specific logic. Since each layer exists independently, that makes it easier to unit test. The communication between UI and data layer is handled by using central repository.

data/
|- local/
    |- constants/
    |- datasources/
    |- app_database.dart
   
|- network/
    |- constants/
    |- exceptions/
    |- rest_client.dart
    
|- sharedpref
    |- constants/
    |- shared_preference_helper.dart
    
|- repository.dart

Stores

The store is where all your application state lives in flutter. The Store is basically a widget that stands at the top of the widget tree and passes it's data down using special methods. In-case of multiple stores, a separate folder for each store is created as shown in the example below:

stores/
|- login/
    |- login_store.dart
    |- form_validator.dart

UI

This directory contains all the ui of your application. Each screen is located in a separate folder making it easy to combine group of files related to that particular screen. All the screen specific widgets will be placed in widgets directory as shown in the example below:

ui/
|- login
   |- login_screen.dart
   |- widgets
      |- login_form.dart
      |- login_button.dart

Utils

Contains the common file(s) and utilities used in a project. The folder structure is as follows:

utils/
|- encryption
   |- xxtea.dart
|- date
  |- date_time.dart

Widgets

Contains the common widgets that are shared across multiple screens. For example, Button, TextField etc.

widgets/
|- app_icon_widget.dart
|- empty_app_bar.dart
|- progress_indicator.dart

Routes

This file contains all the routes for your application.

import 'package:flutter/material.dart';

import 'ui/home/home.dart';
import 'ui/login/login.dart';
import 'ui/splash/splash.dart';

class Routes {
  Routes._();

  //static variables
  static const String splash = '/splash';
  static const String login = '/login';
  static const String home = '/home';

  static final routes = <String, WidgetBuilder>{
    splash: (BuildContext context) => SplashScreen(),
    login: (BuildContext context) => LoginScreen(),
    home: (BuildContext context) => HomeScreen(),
  };
}

Main

This is the starting point of the application. All the application level configurations are defined in this file i.e, theme, routes, title, orientation etc.

import 'package:boilerplate/routes.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

import 'constants/app_theme.dart';
import 'constants/strings.dart';
import 'ui/splash/splash.dart';

void main() {
  SystemChrome.setPreferredOrientations([
    DeviceOrientation.portraitUp,
    DeviceOrientation.portraitDown,
    DeviceOrientation.landscapeRight,
    DeviceOrientation.landscapeLeft,
  ]).then((_) {
    runApp(MyApp());
  });
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: Strings.appName,
      theme: themeData,
      routes: Routes.routes,
      home: SplashScreen(),
    );
  }
}

Wiki

Checkout wiki for more info

Conclusion

I will be happy to answer any questions that you may have on this approach, and if you want to lend a hand with the boilerplate then please feel free to submit an issue and/or pull request 🙂

Again to note, this is example can appear as over-architectured for what it is - but it is an example only. If you liked my work, don’t forget to star the repo to show your support.

Comments
  • Infinite Loop when trying to build project

    Infinite Loop when trying to build project

    Step 3:

    This project uses inject library that works with code generation, execute the following command to generate files:

    flutter packages pub run build_runner build --delete-conflicting-outputs or watch command in order to keep the source code synced automatically:

    flutter packages pub run build_runner watch

    opened by simsimatoo 16
  • boilerplate depends on intl ^0.16.1, version solving failed

    boilerplate depends on intl ^0.16.1, version solving failed

    [flutter-boilerplate-project-master] flutter pub get Running "flutter pub get" in flutter-boilerplate-project-master...
    Because boilerplate depends on flutter_localizations any from sdk which depends on intl 0.17.0, intl 0.17.0 is required.

    So, because boilerplate depends on intl ^0.16.1, version solving failed. pub get failed (1; So, because boilerplate depends on intl ^0.16.1, version solving failed.) exit code 1

    opened by nimitsolanki 13
  • Error with mobx when run build_runner

    Error with mobx when run build_runner

    Hello, thank you so much for the boilerplate-project,

    I'm trying to install the project and I'm getting this error below: Have you got this error? Thank you for your help.

    Error:

    flutter packages pub run build_runner build --delete-conflicting-outputs
    [INFO] Generating build script...
    [INFO] Generating build script completed, took 511ms
    
    [INFO] Creating build script snapshot......
    [INFO] Creating build script snapshot... completed, took 9.0s
    
    [SEVERE] Failed to snapshot build script .dart_tool/build/entrypoint/build.dart.
    This is likely caused by a misconfigured builder definition.
    [SEVERE] file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/interceptable.dart:11:7: Error: Found unsupported uses of 'T' in supertype 'NotificationHandlers'.class Interceptors<T>      ^file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/listenable.dart:10:7: Error: Found unsupported uses of 'TNotification' in supertype 'NotificationHandlers'.class Listeners<TNotification>      ^file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/core/observable.dart:49:20: Error: The getter 'hasHandlers' isn't defined for the class 'Listeners<ChangeNotification<T>>'. - 'Listeners' is from 'package:mobx/src/core.dart' ('file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/core.dart'). - 'ChangeNotification' is from 'package:mobx/src/core.dart' ('file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/core.dart').Try correcting the name to the name of an existing getter, or defining a getter or field named 'hasHandlers'.    if (_listeners.hasHandlers) {                   ^^^^^^^^^^^file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/core/observable.dart:63:23: Error: The getter 'hasHandlers' isn't defined for the class 'Interceptors<T>'. - 'Interceptors' is from 'package:mobx/src/core.dart' ('file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/core.dart').Try correcting the name to the name of an existing getter, or defining a getter or field named 'hasHandlers'.    if (_interceptors.hasHandlers) {                      ^^^^^^^^^^^file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/interceptable.dart:14:48: Error: Too many positional arguments: 0 allowed, but 1 found.Try removing the extra positional arguments.  Interceptors(ReactiveContext context) : super(context);                                               ^file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/interceptable.dart:17:52: Error: Method not found: 'add'.  Dispose intercept(Interceptor<T> interceptor) => add(interceptor);                                                   ^^^file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/interceptable.dart:17:52: Error: The method 'add' isn't defined for the class 'Interceptors<T>'. - 'Interceptors' is from 'package:mobx/src/core.dart' ('file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/core.dart').Try correcting the name to the name of an existing method, or defining a method named 'add'.  Dispose intercept(Interceptor<T> interceptor) => add(interceptor);                                                   ^^^file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/interceptable.dart:20:10: Error: Method not found: '_canHandle'.    if (!_canHandle(change)) {         ^^^^^^^^^^file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/interceptable.dart:26:33: Error: Getter not found: '_handlers'.      for (final interceptor in _handlers.toList(growable: false)) {                                ^^^^^^^^^file:///Users/carlos/flutter/.pub-cache/hosted/pub.dartlang.org/mobx-0.1.4/lib/src/interceptable.dart:24:12: Error: Getter not found: '_context'.    return _context.untracked(() {           ^^^^^^^^
    pub finished with exit code 78
    
    bug 
    opened by analistacarlosh 8
  • Dependency error

    Dependency error

    I try to download boilerplate and run it but I got that error on run. ` [flutter_boilerplate] flutter pub get Running "flutter pub get" in flutter_boilerplate...
    Because boilerplate depends on flutter_localizations any from sdk which depends on intl 0.17.0-nullsafety.2, intl 0.17.0-nullsafety.2 is required.

    So, because boilerplate depends on intl ^0.16.1, version solving failed. pub get failed (1; So, because boilerplate depends on intl ^0.16.1, version solving failed.) exit code 1 `

    opened by elmurphy 7
  • Your Flutter application is created using an older version of the Android embedding. It's being deprecated in favor of Android embedding v2.

    Your Flutter application is created using an older version of the Android embedding. It's being deprecated in favor of Android embedding v2.

    Got this warning when i tried to install the packages

    Warning
    ──────────────────────────────────────────────────────────────────────────────
    Your Flutter application is created using an older version of the Android
    embedding. It's being deprecated in favor of Android embedding v2. Follow the
    steps at
    
    https://flutter.dev/go/android-project-migration
    
    to migrate your project.
    
    enhancement 
    opened by RayhanYulanda 7
  • Installation Error : Because boilerplate depends on flutter_localizations any from sdk which depends on intl 0.17.0, intl 0.17.0 is required.

    Installation Error : Because boilerplate depends on flutter_localizations any from sdk which depends on intl 0.17.0, intl 0.17.0 is required.

    Because boilerplate depends on flutter_localizations any from sdk which depends on intl 0.17.0, intl 0.17.0 is required. So, because boilerplate depends on intl ^0.16.1, version solving failed. pub get failed (1; So, because boilerplate depends on intl ^0.16.1, version solving failed.)

    Things I Tried: I changed the int version to .0.17.0 it then created another issue which says f_logs requires int version <0.17.0.

    Pls fix asap, I am new to flutter

    opened by lakhbawa 6
  • Unable to build for Web

    Unable to build for Web

    Hi, first of all, nice work with this repo. I have a problem where I can't build this for web. I've checked all packages and they are all compatable with Web.

    I think the problem is withing LanguageStore and ThemeStore. I've tried to search for the problem but I didn't find any answer so I'm asking here, maybe you know how to fix it.

    enhancement 
    opened by Errichamonda 6
  • Install

    Install

    Resolving dependencies... 9.2s

    Compiler message: file:///Users/ashish/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/flushbar-1.6.0/lib/flushbar.dart:203:3: Error: Type 'FocusAttachment' not found. FocusAttachment _focusAttachment; ^^^^^^^^^^^^^^^ file:///Users/ashish/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/flushbar-1.6.0/lib/flushbar.dart:203:3: Error: 'FocusAttachment' isn't a type. FocusAttachment _focusAttachment; ^^^^^^^^^^^^^^^ file:///Users/ashish/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/flushbar-1.6.0/lib/flushbar.dart:224:35: Error: The method 'attach' isn't defined for the class 'FocusScopeNode'.

    • 'FocusScopeNode' is from 'package:flutter/src/widgets/focus_manager.dart' ('file:///Users/ashish/Desktop/flutter/packages/flutter/lib/src/widgets/focus_manager.dart'). Try correcting the name to the name of an existing method, or defining a method named 'attach'. _focusAttachment = _focusNode.attach(context); ^^^^^^ file:///Users/ashish/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/flushbar-1.6.0/lib/flushbar.dart:235:16: Error: The method 'dispose' isn't defined for the class 'FocusScopeNode'.
    • 'FocusScopeNode' is from 'package:flutter/src/widgets/focus_manager.dart' ('file:///Users/ashish/Desktop/flutter/packages/flutter/lib/src/widgets/focus_manager.dart'). Try correcting the name to the name of an existing method, or defining a method named 'dispose'. _focusNode.dispose(); ^^^^^^^ Compiler failed on /Users/ashish/Desktop/And/f1/boilerplate/lib/main.dart Running Gradle task 'assembleDebug'... Running Gradle task 'assembleDebug'... Done 40.5s Gradle task assembleDebug failed with exit code 1
    help wanted 
    opened by ashishnimrot 6
  • Dart Inject vs Injector

    Dart Inject vs Injector

    Google's Inject repo has been archived. It's been in preview for the past 3 years and there is no active support or bug fixing.

    Looking at alternatives, I have come across Injector. Any thought on that?

    opened by gc-robotics 5
  • Not Pub get Project

    Not Pub get Project

    Hello

    Download your project but when pub get Getting this Error

    The current Dart SDK version is 2.9.2.

    Because boilerplate depends on build_runner >=1.10.2 which requires SDK version >=2.10.0-0.0 <3.0.0, version solving failed. pub get failed (1; Because boilerplate depends on build_runner >=1.10.2 which requires SDK version >=2.10.0-0.0 <3.0.0, version solving failed.)

    opened by bhargavsavasani 4
  • Issue with FlushBar arguments

    Issue with FlushBar arguments

    Hey, there's an error with FlushBar install & arguments, know how to fix it ?

    Compiler message:
    /C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/flushbar-1.9.1/lib/flushbar_route.dart:273:8: Error: The method 'FlushbarRoute.install' has more required arguments than those of overridden method 'OverlayRoute.install'.
      void install(OverlayEntry insertionPoint) {
           ^
    /C:/src/flutter/packages/flutter/lib/src/widgets/routes.dart:41:8: Context: This is the overridden method ('install').
      void install() {
           ^
    /C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/flushbar-1.9.1/lib/flushbar_route.dart:281:18: Error: Too many positional arguments: 0 allowed, but 1 found.
    Try removing the extra positional arguments.
        super.install(insertionPoint);
                     ^
    
    Compiler message:
    /C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/flushbar-1.9.1/lib/flushbar_route.dart:273:8: Error: The method 'FlushbarRoute.install' has more required arguments than those of overridden method 'OverlayRoute.install'.
      void install(OverlayEntry insertionPoint) {
           ^
    /C:/src/flutter/packages/flutter/lib/src/widgets/routes.dart:41:8: Context: This is the overridden method ('install').
      void install() {
           ^
    /C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/flushbar-1.9.1/lib/flushbar_route.dart:281:18: Error: Too many positional arguments: 0 allowed, but 1 found.
    Try removing the extra positional arguments.
        super.install(insertionPoint);
                     ^
    Target kernel_snapshot failed: Exception: Errors during snapshot creation: null
    build failed.
    
    FAILURE: Build failed with an exception.
    
    * Where:
    Script 'C:\src\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 840
    
    * What went wrong:
    Execution failed for task ':app:compileFlutterBuildDebug'.
    > Process 'command 'C:\src\flutter\bin\flutter.bat'' finished with non-zero exit value 1
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 16s
    Exception: Gradle task assembleDebug failed with exit code 1
    
    
    opened by devzom 4
  • What should I do to add the repo new features

    What should I do to add the repo new features

    What should I do to add the repo new features to my project when it is finished like these awesome features Up-Coming Features: Connectivity Support Background Fetch Support

    opened by aymangithub 0
  • feature/mvi branch PostStore

    feature/mvi branch PostStore

    There is no reason to using PostStore with Provider

    i.e. i do not see any reason for the following within my_app.dart

    Provider<PostStore>(create: (_) => _postStore),

    PostStore is used within home.dart, where you can remove reference to Provider.of and just use a reference to the PostStore (mobx class) and reference it via getIt (that you registered in service_locator.dart)

      // _postStore = Provider.of<PostStore>(context);
      _postStore = getIt<PostStore>();
    
    opened by dyardy 0
  • why is languagestore, themestore, userstore registered in service_locator

    why is languagestore, themestore, userstore registered in service_locator

    I notice in feature/mvi branch (the latest) that languagestore, themestore, userstore is registered in service_locator AS well as new'd up again in MyApp. This seems like duplication

    i.e. getIt.registerSingleton(LanguageStore(getIt())); getIt.registerSingleton(ThemeStore(getIt())); getIt.registerSingleton(UserStore(getIt()));

    and also in my_app.dart final ThemeStore _themeStore = ThemeStore(getIt()); final PostStore _postStore = PostStore(getIt()); final LanguageStore _languageStore = LanguageStore(getIt()); final UserStore _userStore = UserStore(getIt());

    opened by dyardy 1
Owner
Zubair Rehman
Android | Flutter Developer @ EmbraceIT
Zubair Rehman
A boilerplate project created in flutter using MobX and Provider.

Boilerplate Project A boilerplate project created in flutter using MobX and Provider. Boilerplate supports both web and mobile, clone the appropriate

Zubair Rehman 1.9k Jan 8, 2023
BloilerplateProject - A boilerplate project created in flutter using MobX and Provider

Boilerplate Project A boilerplate project created in flutter using MobX and Prov

null 1 Oct 23, 2022
Neha Tanwar 4 Feb 2, 2022
Yugioh Cards Sample App using MobX, Provider, and Chopper

Yugioh Cards Sample App All data are collected from https://db.ygoprodeck.com/api-guide/. I apply MobX as state management for this app. At this time,

Fikri Razzaq 31 Dec 29, 2022
Note provider - Note App using Provider state management, Sqflite and Localization for two language Arabic and English.

note_provider Sqflite with provider statemanagement Getting Started This project is a starting point for a Flutter application. A few resources to get

Mohanned Anwar 0 Jan 1, 2022
Dusyeri provider task - Dusyeri provider task built using flutter

Düşyeri Provider Task https://github.com/alper-mf/dusyeri_provider_task/blob/7d1

null 1 May 9, 2022
In this project, I performed a RESTful API operation with MobX.

In this project, I performed a RESTful API operation with MobX. When we click on one of the listed users, the post information of that user is display

Dilber KILIÇ 11 Sep 7, 2022
A boilerplate project for Flutter using RiverPod, Dio, auto_route

Flutter Boilerplate A boilerplate project for Flutter using RiverPod, Dio, auto_route, Freezed and generated with very_good_cli. This is a very simple

Gildo Jr 9 Dec 9, 2022
Pomodoro-app - Application of a pomodoro clock with Flutter using Mobx as state management

Pomodoro App Tecnologias | Como executar | Licença Demo ✨ Tecnologias Esse proje

Dhiana Pereira 4 Oct 21, 2022
Flutter table with dio and provider - A flutter Application created for Portfolio Page

My LinkedIn https://www.linkedin.com/in/marcelo-augusto-a60b6821a/ Intro This is

Marcelo Augusto 1 Jan 18, 2022
Flutter ui boilerplate is easiest way to create new flutter project with clean code and well organized file folder.

Flutter UI Boilerplate "Sharing for fun" Flutter ui boilerplate is easiest way to create new flutter project with clean code and well organized file f

Dimas Ibnu Malik 122 Dec 1, 2022
A flutter boilerplate project containing bloc, pedantic, hive, easy_translations and more!

Flutter Production Boilerplate A flutter project containing bloc, flutter_lints, hive, easy_translations and more! This repository is the starting poi

Andreas Feichtinger 133 Dec 26, 2022
A Boilerplate Project which adopts the concept of Clean Architecture and Modularization.

Flutter-Works Boilerplate Table Of Content Overview Getting Started Requirement Setup Setup Firebase Android IOS Change Package Name Running/Debugger

KodingWorks 54 Aug 28, 2022
A basic boilerplate template for starting a Flutter GetX project. GetX, Dio, MVVM, get CLI, Localization, Pagination etc are implemented.

Flutter GetX Template (GetX, Dio, MVVM) This Flutter Template using GetX package for State management, routing and Dependency Injection (bindings). We

Hasan Abdullah 214 Jan 9, 2023
Flutter starter project - boilerPlate for Clean Architecture with Domain-Driven-Design with commonly used dependencies

flutter_starter_project A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you

MJ Montes 0 Jan 2, 2022
Relógio Pomodoro desenvolvido em Flutter utilizando reatividade como MOBX

pomodoro A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this

Evandro Augusto Guaranha Da Silva 0 Nov 24, 2021
A starter example of a Flutter + Mobx + Notifications

flutter-example A starter example of a Flutter + Mobx + Firebase Nofitications Before Debug $ flutter packages pub run build_runner watch --delete-con

Jonatas Walker 10 Feb 3, 2021
Projeto utilizado para estudo do Slidy, Flutter Modular, Mobx e novos conceitos de UI, desenvolvido com base em curso online.

my_workout A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if th

Leandro Simões 3 Sep 9, 2022
A powerful state machine for MobX management, that can be used in almost any application state.

A powerful state machine for MobX management, which can be used in almost any application state. It has 3 states - loading, success, error - and is pe

Daniel Magri 8 Oct 31, 2022