From 85f06c37851b7aec3f22056ae9ae19cdf82654dc Mon Sep 17 00:00:00 2001 From: hdbg Date: Thu, 9 Oct 2025 18:45:50 +0200 Subject: [PATCH] fix(bootstraper): invalid logic --- lib/src/bootstrapper.dart | 42 +++++++++++++++++-------------------- lib/src/loaders/loader.dart | 11 +++------- pubspec.yaml | 6 +++--- 3 files changed, 25 insertions(+), 34 deletions(-) diff --git a/lib/src/bootstrapper.dart b/lib/src/bootstrapper.dart index 0e0b680..410be0e 100644 --- a/lib/src/bootstrapper.dart +++ b/lib/src/bootstrapper.dart @@ -1,6 +1,4 @@ import 'dart:async'; -import 'dart:isolate'; -import 'package:bloc/bloc.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; @@ -48,7 +46,7 @@ class BootstrapState with _$BootstrapState { final StageController? controller; StageFactory get currentStage => stages[currentStageIndex]; - bool get isCompleted => currentStageIndex > stages.length; + bool get isCompleted => currentStageIndex >= stages.length; BootstrapState(this.stages, {this.currentStageIndex = 0, this.controller}); } @@ -81,6 +79,7 @@ class BootstrapController extends Bloc { if (newState.isCompleted) { talker.info("BootstrapController: All stages completed"); + add(const BootstrapEvent.finished()); } else if (await newState.currentStage.isCompleted) { talker.info( "BootstrapController: Stage ${newState.currentStage.title} already completed, skipping", @@ -93,30 +92,28 @@ class BootstrapController extends Bloc { emit(newState); } }); + on((event, emit) { + talker.info("BootstrapController: Bootstrap process finished"); + }); } StageController launchCurrentStage(Stages stages, int index) { final currentStage = stages[index]; final controller = StageController(title: currentStage.title); - Isolate.run( - () => currentStage - .start(controller) - .then((_) { - talker.info( - "BootstrapController: Stage ${currentStage.title} completed", - ); - add(BootstrapEvent.stageCompleted()); - }) - .catchError((error) { - talker.handle( - error, - null, - "BootstrapController: Error in ${currentStage.title}", - ); - addError(error); - }), - ); + currentStage + .start(controller) + .then((_) { + add(BootstrapEvent.stageCompleted()); + }) + .catchError((error) { + talker.handle( + error, + null, + "BootstrapController: Error in ${currentStage.title}", + ); + addError(error); + }); return controller; } @@ -136,7 +133,7 @@ class BootstrapFooter extends StatelessWidget { return Column( children: [ Text( - "${state.currentStage.title} ${controller.state.progress.toStringAsFixed(2)}%", + "${state.currentStage.title} ${(controller.state.progress * 100).toStringAsFixed(2)}%", ), CircularProgressIndicator.adaptive( value: controller.state.progress, @@ -164,7 +161,6 @@ class Bootstrapper extends StatelessWidget { create: (context) { final controller = BootstrapController(BootstrapState(stages)); controller.add(const BootstrapEvent.start()); - controller.launchCurrentStage(stages, 0); return controller; }, child: BlocListener( diff --git a/lib/src/loaders/loader.dart b/lib/src/loaders/loader.dart index ef9e81e..1118083 100644 --- a/lib/src/loaders/loader.dart +++ b/lib/src/loaders/loader.dart @@ -4,8 +4,8 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:rive/rive.dart'; enum LoaderFlavour { - small(filepath: 'assets/loaders/small_loaders/small_loader.riv'), - big(filepath: 'assets/loaders/big_loaders/big_logo_splash.riv'); + small(filepath: 'assets/animations/loaders/small_loader.riv'), + big(filepath: 'assets/animations/big_loaders/big_logo_splash.riv'); const LoaderFlavour({required this.filepath}); @@ -39,14 +39,9 @@ class Loader extends HookWidget { @override Widget build(BuildContext context) { final animFile = useMemoized( - () => - FileLoader.fromAsset(flavour.filepath, riveFactory: Factory.flutter), + () => FileLoader.fromAsset(flavour.filepath, riveFactory: Factory.rive), ); - useEffect(() { - return animFile.dispose; - }, [animFile]); - return RiveWidgetBuilder( fileLoader: animFile, builder: (context, state) { diff --git a/pubspec.yaml b/pubspec.yaml index a886c99..e22e80d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: markettakers description: "MarketTakers library" -version: 1.0.0 +version: 1.0.1 publish_to: https://gitea.tailc58da6.ts.net/api/packages/MarketTakers/pub/ repository: https://gitea.tailc58da6.ts.net/MarketTakers/markettakers-flutter @@ -31,5 +31,5 @@ dev_dependencies: flutter: assets: - - assets/animations/big_loaders/ - - assets/animations/loaders/ + - assets/animations/big_loaders/big_logo_splash.riv + - assets/animations/loaders/small_loader.riv