startup_tasks 1.0.2
startup_tasks: ^1.0.2 copied to clipboard
A lightweight Dart scheduler for coordinating Flutter app startup stages, task dependencies, retries, timeouts, and reports.
import 'package:startup_tasks/startup_tasks.dart';
const apiBaseUrlKey = StartupKey<String>('apiBaseUrl');
final class LoadConfigTask extends StartupTask {
const LoadConfigTask();
@override
String get id => 'app.load_config';
@override
StartupStage get stage => StartupStage.prepare;
@override
bool get critical => true;
@override
Future<void> run(StartupContext context) async {
await Future<void>.delayed(const Duration(milliseconds: 50));
context.write(apiBaseUrlKey, 'https://api.example.com');
}
}
final class RegisterServicesTask extends StartupTask {
const RegisterServicesTask();
@override
String get id => 'app.register_services';
@override
StartupStage get stage => StartupStage.business;
@override
List<String> get dependencies => const ['app.load_config'];
@override
Future<void> run(StartupContext context) async {
final apiBaseUrl = context.require(apiBaseUrlKey);
print('Registering services for $apiBaseUrl');
}
}
Future<void> main() async {
final manager = StartupManager(
tasks: const [LoadConfigTask(), RegisterServicesTask()],
);
final report = await manager.run();
print(report.formatSummary());
}