import 'dart:async'; import 'package:flutter/material.dart'; import 'package:markettakers/main.dart'; class SimpleStage extends StageFactory { @override final String title = "Test"; @override Future get isCompleted async { return false; } @override Future start(StageController controller) async { await Future.delayed(Duration(seconds: 2)); controller.updateProgress(0.3); controller.updateTitle("test 2"); await Future.delayed(Duration(seconds: 2)); controller.updateProgress(0.6); } } class SimpleStage2 extends StageFactory { @override final String title = "Test 2"; @override Future get isCompleted async { return false; } @override Future start(StageController controller) async { await Future.delayed(Duration(seconds: 2)); controller.updateProgress(0.3); controller.updateTitle("test 5"); await Future.delayed(Duration(seconds: 2)); controller.updateProgress(0.6); } } void main() async { WidgetsFlutterBinding.ensureInitialized(); init(); final completer = Completer(); completer.future.then((_) { talker.info("Bootstrapper completed, launching app"); }); runApp( Scaffold( body: Bootstrapper( stages: [SimpleStage(), SimpleStage2()], onCompleted: completer, ), ), ); }