Advanced

Provider

Einleitung zu Providern

In Nylo Website werden Provider initial aus Ihrer main.dart-Datei gebootet, wenn Ihre Anwendung ausgeführt wird. Alle Ihre Provider befinden sich in /lib/app/providers/*, Sie können diese Dateien ändern oder Ihre Provider mit Metro erstellen.

Provider können verwendet werden, wenn Sie eine Klasse, ein Paket initialisieren oder etwas erstellen müssen, bevor die App initial lädt. Z.B. ist die Klasse route_provider.dart dafür verantwortlich, alle Routen zu Nylo Website hinzuzufügen.

Vertiefung

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
  );
}

Lebenszyklus

  • Boot.Nylo Website durchläuft Ihre registrierten Provider in der config/providers.dart-Datei und bootet sie.

  • Boot.Finished wird direkt nach "Boot.Nylo Website" aufgerufen. Diese Methode bindet die Nylo Website-Instanz an Backpack mit dem Wert 'nylo'.

Z.B. Backpack.instance.read('nylo'); // Nylo Website-Instanz

Einen neuen Provider erstellen

Sie können neue Provider erstellen, indem Sie den folgenden Befehl im Terminal ausführen.

metro make:provider cache_provider

Provider-Objekt

Ihr Provider hat zwei Methoden: setup(Nylo nylo) und boot(Nylo nylo).

Wenn die App zum ersten Mal ausgeführt wird, wird jeder Code innerhalb Ihrer setup-Methode zuerst ausgeführt. Sie können auch das Nylo-Objekt manipulieren, wie im folgenden Beispiel.

Beispiel: 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();
    }
  }
}

Lebenszyklus

  1. setup(Nylo nylo) - Initialisieren Sie Ihren Provider. Geben Sie die Nylo-Instanz oder null zurück.
  2. boot(Nylo nylo) - Wird aufgerufen, nachdem alle Provider das Setup abgeschlossen haben. Verwenden Sie dies für Initialisierungen, die davon abhängen, dass andere Provider bereit sind.

Innerhalb der setup-Methode müssen Sie eine Instanz von Nylo oder null zurückgeben, wie oben gezeigt.