import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:mtcore/markettakers.dart'; class SimpleStage extends StageFactory { @override final String title = "Test"; @override Future get isAlreadyCompleted async { return false; } @override Future start(StageController controller) async { await Future.delayed(Duration(seconds: 2)); controller.setDefiniteProgress(0.3); controller.updateTitle("test 2"); await Future.delayed(Duration(seconds: 2)); controller.setDefiniteProgress(0.6); } } class SimpleStage2 extends StageFactory { @override final String title = "Test 2"; @override Future get isAlreadyCompleted async { return false; } @override Future start(StageController controller) async { controller.setDefiniteProgress(0.1); await Future.delayed(Duration(seconds: 2)); controller.setDefiniteProgress(0.3); controller.updateTitle("test 5"); await Future.delayed(Duration(seconds: 2)); controller.setDefiniteProgress(0.6); } } void main() async { WidgetsFlutterBinding.ensureInitialized(); init(); final completer = Completer(); completer.future.then((_) { talker.info("Bootstrapper completed, launching app"); }); runApp( MaterialApp( theme: ThemeData.dark(useMaterial3: true), home: ProviderScope( child: Bootstrapper( stages: [SimpleStage(), SimpleStage2()], onCompleted: completer, ), ), ), ); }