From 5a3eac1be2fda59fd08cfcfbf5a4154feaeab3f9 Mon Sep 17 00:00:00 2001
From: "k.mannweiler" <2012491@stud.hs-mannheim.de>
Date: Tue, 7 Mar 2023 01:12:06 +0100
Subject: [PATCH] Hotfix loop audioplayer and scannerpage
---
README.md | 5 +----
lib/pages/scanner_page.dart | 26 --------------------------
lib/providers/audio_provider.dart | 1 +
lib/widgets/scanner.dart | 20 +++++++++++++++++++-
4 files changed, 21 insertions(+), 31 deletions(-)
diff --git a/README.md b/README.md
index 43d53bf..22db967 100644
--- a/README.md
+++ b/README.md
@@ -18,10 +18,7 @@ Die App lässt sich als Android- und iOS App ausführen und zu Debugzwecken eben
## App bedienen
-Um die App nutzen zu können, müssen Settings eingelesen werden. Dazu kann entweder ein in die App integrierter QR-Code Scanner (mit dem beigefügten [QR-Code](./gruppe1_QR.png)) benutzt werden, oder zu Debugzwecken mit dem dafür vorgesehenen Button auf der Scannerseite über eine lokale JSON-Datei.
-Es ist zu beachten, dass das verwendete QR-Code Scanner Package für Mobilgeräte optimiert ist. Deshalb kann es zu Abstürzen beim Verwenden des Scanners mit der Web-Version kommen.
-Beim Verwenden der Web-Version sollten die Settings mit der lokalen JSON-Datei eingelesen werden.
-Der Button zum Einlesen der lokalen JSON-Datei kann über die Variable bool useLocalConfig
in der Datei [globals.dart](./lib/globals.dart) ein- und ausgeblendet werden.
+Um die App nutzen zu können, müssen Settings eingelesen werden. Dazu kann entweder ein in die App integrierter QR-Code Scanner (mit dem beigefügten [QR-Code](./gruppe1_QR.png)) benutzt werden, oder zu Debugzwecken über eine lokale JSON-Datei. Es ist zu beachten, dass das verwendete QR-Code Scanner Package für Mobilgeräte optimiert ist. Deshalb kann es zu Abstürzen beim Verwenden des Scanners mit der Web-Version kommen. Beim Verwenden der Web-Version sollten die Settings mit der lokalen JSON-Datei eingelesen werden. Um beim Klick auf den Scan-Button die lokale JSON-Datei einzulesen, muss in der Datei [globals.dart](./lib/globals.dart) die Variable bool useLocalConfig = true;
gesetzt werden.
## Authoren
diff --git a/lib/pages/scanner_page.dart b/lib/pages/scanner_page.dart
index eee7dd0..ef417f7 100644
--- a/lib/pages/scanner_page.dart
+++ b/lib/pages/scanner_page.dart
@@ -1,13 +1,9 @@
-import 'package:awesome_dialog/awesome_dialog.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:smoke_cess_app/services/export_service.dart';
-import 'package:smoke_cess_app/services/settings_service.dart';
-import 'package:smoke_cess_app/services/notification_service.dart';
import 'package:smoke_cess_app/widgets/buttons/text_icon_button.dart';
import 'package:smoke_cess_app/widgets/scanner.dart';
import '../providers/settings_provider.dart';
-import '../globals.dart' as globals;
class ScannerPage extends StatelessWidget {
const ScannerPage({super.key});
@@ -17,21 +13,6 @@ class ScannerPage extends StatelessWidget {
exportService.exportData();
}
- void loadJSON(BuildContext context) async {
- SettingsProvider settingsModel = context.read();
- await loadSettingsFromLocalJSON();
- settingsModel.initSettings();
- NotificationService().setAllNotifications();
- if (context.mounted) {
- AwesomeDialog(
- context: context,
- dialogType: DialogType.success,
- title: 'Geschafft',
- desc: 'Die Einstellung wurden erfolgreich gespeichert',
- ).show();
- }
- }
-
@override
Widget build(BuildContext context) {
SettingsProvider settingsProvider = context.watch();
@@ -47,13 +28,6 @@ class ScannerPage extends StatelessWidget {
text: 'Export',
onPressed: ExportService().exportData,
iconData: Icons.upload),
- if (globals.useLocalConfig && !settingsProvider.scanning)
- ElevatedButton(
- style: ElevatedButton.styleFrom(
- textStyle: const TextStyle(fontSize: 20)),
- onPressed: () => loadJSON(context),
- child: const Text('Read JSON'),
- ),
],
));
}
diff --git a/lib/providers/audio_provider.dart b/lib/providers/audio_provider.dart
index a141cb2..a706544 100644
--- a/lib/providers/audio_provider.dart
+++ b/lib/providers/audio_provider.dart
@@ -42,6 +42,7 @@ class AudioProvider extends ChangeNotifier {
_audioPlayer.play(_beepSoundSource);
_onCompleteSubscription = _audioPlayer.onPlayerComplete.listen((event) {
_audioPlayer.play(source);
+ _audioPlayer.setReleaseMode(ReleaseMode.loop);
});
}
}
diff --git a/lib/widgets/scanner.dart b/lib/widgets/scanner.dart
index 19864a8..0adb5cd 100644
--- a/lib/widgets/scanner.dart
+++ b/lib/widgets/scanner.dart
@@ -8,6 +8,7 @@ import 'package:smoke_cess_app/services/settings_service.dart';
import 'package:smoke_cess_app/widgets/buttons/text_icon_button.dart';
import '../providers/settings_provider.dart';
import '../services/notification_service.dart';
+import '../globals.dart' as globals;
class MyScanner extends StatelessWidget {
const MyScanner({super.key});
@@ -57,6 +58,21 @@ class MyScanner extends StatelessWidget {
}
}
+ void loadJSON(BuildContext context) async {
+ SettingsProvider settingsModel = context.read();
+ await loadSettingsFromLocalJSON();
+ settingsModel.initSettings();
+ NotificationService().setAllNotifications();
+ if (context.mounted) {
+ AwesomeDialog(
+ context: context,
+ dialogType: DialogType.success,
+ title: 'Geschafft',
+ desc: 'Die Einstellung wurden erfolgreich gespeichert',
+ ).show();
+ }
+ }
+
return settingsProvider.scanning
? Expanded(
child: Stack(
@@ -79,7 +95,9 @@ class MyScanner extends StatelessWidget {
))
: TextIconButton(
text: "Scan",
- onPressed: () => settingsProvider.scanning = true,
+ onPressed: globals.useLocalConfig
+ ? () => loadJSON(context)
+ : () => settingsProvider.scanning = true,
iconData: Icons.qr_code_scanner_outlined);
}
}