From 6412f8901e5c89094f86a7a002709b6c2818c06c Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Mon, 8 May 2023 22:35:24 +0530 Subject: [PATCH] Perf: Do not wait for objectService init during app start --- lib/main.dart | 6 +++--- lib/services/object_detection/object_detection_service.dart | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index fb509cfdc..0c6f1ccb7 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -187,9 +187,9 @@ Future _init(bool isBackground, {String via = ''}) async { }); } FeatureFlagService.instance.init(); - if (FeatureFlagService.instance.isInternalUserOrDebugBuild()) { - await ObjectDetectionService.instance.init(); - } + + unawaited(ObjectDetectionService.instance.init()); + _logger.info("Initialization done"); } diff --git a/lib/services/object_detection/object_detection_service.dart b/lib/services/object_detection/object_detection_service.dart index 64d48b580..5ca87431c 100644 --- a/lib/services/object_detection/object_detection_service.dart +++ b/lib/services/object_detection/object_detection_service.dart @@ -21,6 +21,7 @@ class ObjectDetectionService { late IsolateUtils _isolateUtils; ObjectDetectionService._privateConstructor(); + bool inInitiated = false; Future init() async { _isolateUtils = IsolateUtils(); @@ -40,6 +41,7 @@ class ObjectDetectionService { } catch (e, s) { _logger.severe("Could not initialize sceneclassifier", e, s); } + inInitiated = true; } static ObjectDetectionService instance = @@ -47,6 +49,9 @@ class ObjectDetectionService { Future> predict(Uint8List bytes) async { try { + if (!inInitiated) { + return Future.error("ObjectDetectionService init is not completed"); + } final results = {}; results.addAll(await _getObjects(bytes)); results.addAll(await _getMobileNetResults(bytes));