Advanced

Provider

Introduzione ai Provider

In Nylo Website, i provider vengono avviati inizialmente dal tuo file main.dart quando l'applicazione viene eseguita. Tutti i tuoi provider risiedono in /lib/app/providers/*, puoi modificare questi file o creare i tuoi provider usando Metro.

I provider possono essere usati quando hai bisogno di inizializzare una classe, un pacchetto o creare qualcosa prima che l'app venga caricata inizialmente. Ad esempio, la classe route_provider.dart e' responsabile dell'aggiunta di tutte le rotte a Nylo Website.

Approfondimento

import 'package:nylo_framework/nylo_framework.dart';
import 'bootstrap/boot.dart';

/// Nylo - Framework for Flutter Developers
/// Docs: https://nylo.dev/docs/7.x

/// Main entry point for the application.
void main() async {
  await Nylo.init(
    setup: Boot.nylo,
    setupFinished: Boot.finished,

    // showSplashScreen: true,
    // Uncomment showSplashScreen to show the splash screen
    // File: lib/resources/widgets/splash_screen.dart
  );
}

Ciclo di Vita

  • Boot.Nylo Website itererara' attraverso i tuoi provider registrati nel file config/providers.dart e li avviera'.

  • Boot.Finished viene chiamato subito dopo che "Boot.Nylo Website" e' terminato, questo metodo leghera' l'istanza di Nylo Website a Backpack con il valore 'nylo'.

Es. Backpack.instance.read('nylo'); // istanza di Nylo Website

Creare un nuovo Provider

Puoi creare nuovi provider eseguendo il comando seguente nel terminale.

metro make:provider cache_provider

Oggetto Provider

Il tuo provider avra' due metodi, setup(Nylo nylo) e boot(Nylo nylo).

Quando l'app viene eseguita per la prima volta, qualsiasi codice all'interno del tuo metodo setup verra' eseguito per primo. Puoi anche manipolare l'oggetto Nylo come nell'esempio qui sotto.

Esempio: lib/app/providers/app_provider.dart

class AppProvider extends NyProvider {

  @override
  Future<Nylo?> setup(Nylo nylo) async {
    await NyLocalization.instance.init(
        localeType: localeType,
        languageCode: languageCode,
        languagesList: languagesList,
        assetsDirectory: assetsDirectory,
        valuesAsMap: valuesAsMap);

    return nylo;
  }

  @override
  Future<void> boot(Nylo nylo) async {
    User user = await Auth.user();
    if (!user.isSubscribed) {
      await Auth.remove();
    }
  }
}

Ciclo di Vita

  1. setup(Nylo nylo) - Inizializza il tuo provider. Restituisci l'istanza Nylo o null.
  2. boot(Nylo nylo) - Chiamato dopo che tutti i provider hanno completato il setup. Usa questo per l'inizializzazione che dipende dalla prontezza di altri provider.

All'interno del metodo setup, devi restituire un'istanza di Nylo o null come nell'esempio sopra.