Providers
Providers 简介
在 Nylo Website 中,providers 在应用运行时从 main.dart 文件初始启动。您所有的 providers 位于 /lib/app/providers/*,您可以修改这些文件或使用 Metro 创建您的 providers。
当您需要在应用初始加载之前初始化类、包或创建某些内容时,可以使用 Providers。例如,route_provider.dart 类负责将所有路由添加到 Nylo Website。
深入了解
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
);
}
生命周期
-
Boot.Nylo Website将遍历 config/providers.dart 文件中注册的 providers 并启动它们。 -
Boot.Finished在 "Boot.Nylo Website" 完成后立即调用,此方法将 Nylo Website 实例绑定到Backpack,值为 'nylo'。
例如 Backpack.instance.read('nylo'); // Nylo Website 实例
创建新 Provider
您可以通过在终端中运行以下命令来创建新的 providers。
metro make:provider cache_provider
Provider 对象
您的 provider 将有两个方法,setup(Nylo nylo) 和 boot(Nylo nylo)。
当应用首次运行时,setup 方法中的任何代码将首先执行。您也可以像下面的示例一样操作 Nylo 对象。
示例: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();
}
}
}
生命周期
setup(Nylo nylo)- 初始化您的 provider。返回Nylo实例或null。boot(Nylo nylo)- 在所有 providers 完成 setup 后调用。用于依赖其他 providers 准备就绪的初始化。
在
setup方法中,您必须像上面那样返回Nylo实例或null。