From 77da3be5d7392e78029cf7acc2cbedf71e6cfca5 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Sat, 3 Jan 2026 14:05:18 +0100 Subject: [PATCH] Fix: Entfernt Dauer-Loop --- .../background_task_controller.dart | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/lib/Controller/background_task_controller.dart b/lib/Controller/background_task_controller.dart index 062a237..ccc060f 100644 --- a/lib/Controller/background_task_controller.dart +++ b/lib/Controller/background_task_controller.dart @@ -6,6 +6,7 @@ import 'package:flutter/services.dart'; import 'package:workmanager/workmanager.dart'; import '../Tasks/generate_transactions_task.dart'; +import '../Tasks/task.dart'; import 'port_controller.dart'; /// Erstellt Hintergrundtasks und führt diese aus @@ -25,24 +26,35 @@ class BackgroundTaskController { } else { unawaited( Isolate.run(() async { - sleep(const Duration(minutes: 1)); - - while (true) { - final RootIsolateToken? rootIsolateToken = await PortController() - .getRootIsolateToken(); - - if (rootIsolateToken != null) { - BackgroundIsolateBinaryMessenger.ensureInitialized( - rootIsolateToken, - ); - await GenerateTransactionsTask().execute(); - } - sleep(const Duration(minutes: 30)); - } + await _runTask( + GenerateTransactionsTask(), + const Duration(minutes: 1), + const Duration(minutes: 30), + ); }), ); } } + + Future _runTask( + final Task task, + final Duration initialDelay, + final Duration frequency, + ) async { + sleep(initialDelay); + + final RootIsolateToken? rootIsolateToken = await PortController() + .getRootIsolateToken(); + + if (rootIsolateToken != null) { + BackgroundIsolateBinaryMessenger.ensureInitialized(rootIsolateToken); + await GenerateTransactionsTask().execute(); + } + + sleep(frequency); + + unawaited(_runTask(task, initialDelay, frequency)); + } } /// Die Funktion wird von Hintergrundtasks ausgerufen, um diese auszuführen