Guards

style: very good analysis Powered by Mason License: MIT

Setup 🚧

1️⃣ flutter pub add guards
2️⃣ Create lib/core/guards/base.dart with your project settings

abstract base class MyProjectGuard extends GuardBase {
    //none of the project guards will require a special persistenceDelegate, so we cut down that possibility project-wide with this code
    MyProjectGuard() : super(persistenceDelegate: null);
}

3️⃣ Create your guards like lib/core/guards/login_guard.dart

class GuardLogin extends MyProjectGuard{
    ///Implement every field
}

4️⃣ Define your project's guards in a GuardsSystem of your project:

class MyProjectGuards extends Guards {
  MyProjectGuards({required this.gpsActive})
    : super(persistenceDelegate: null, initialGuards: [gpsActive]);

  // define the guards you want to use in your app like this as much as possible for simplicity and ease of use
  final GuardGpsActive gpsActive;

  // if for some reason you want to have a guard that can't be initialized at the start of the app, you can use this technique instead
  GuardGeolocationPermission get geolocationPermission =>
      getGuardByGuardIdentifier('geolocation_permission');
}

5️⃣ Create the pages that will be used for redirection when guards aren't satisfied

🔀 This package tries to be agnostic in the routing solution of your choice, but here are the vicissitudes for every solution you could have

auto_route

6️⃣ Add your guard system to your MaterialApp router

go_router

TBD

vanilla

TBD


Running Tests 🧪

For first time users, install the very_good_cli:

dart pub global activate very_good_cli

To run all unit tests:

very_good test --coverage

To view the generated coverage report you can use lcov.

# Generate Coverage Report
genhtml coverage/lcov.info -o coverage/

# Open Coverage Report
open coverage/index.html

Usage

  1. Import the package
  2. Define the guards you will use in a guards/ dir on your app's dir
  3. Include a Guards.init() in your bootstrap with the PersistenceDelegate in charge of storing in the app memory-on-disk the guards status
  4. Include the guards in your router

Features

  • checkeo de estado de las guardas
  • asd

Libraries

auto_route
guards
All the necessary for your project's guard-system