Erweiterungen
This commit is contained in:
1 parent
3c2e9ceecb
commit
85d6d49258
16 files changed
+98
-77
No files matched your search
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -24,7 +24,7 @@ class AcceptedJobsPage extends ContentViewWidget {
|
|||||||
'Angenommene Aufträge',
|
'Angenommene Aufträge',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 24.0,
|
fontSize: 20.0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
rightButtonEnabled: false,
|
rightButtonEnabled: false,
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import 'package:isar/isar.dart';
|
|||||||
import 'package:stadtbote/content_views/tour_list_page.dart';
|
import 'package:stadtbote/content_views/tour_list_page.dart';
|
||||||
import 'package:stadtbote/content_views/utils/content_view_widget.dart';
|
import 'package:stadtbote/content_views/utils/content_view_widget.dart';
|
||||||
import 'package:stadtbote/content_views/utils/header_info.dart';
|
import 'package:stadtbote/content_views/utils/header_info.dart';
|
||||||
import 'package:intl/intl.dart';
|
|
||||||
import 'package:stadtbote/tools/message_service.dart';
|
import 'package:stadtbote/tools/message_service.dart';
|
||||||
|
|
||||||
import '../main.dart';
|
import '../main.dart';
|
||||||
@@ -24,12 +23,12 @@ class ApproachAreaPage extends ContentViewWidget {
|
|||||||
'Angenommene Aufträge',
|
'Angenommene Aufträge',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 24.0,
|
fontSize: 20.0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
rightButtonEnabled: true,
|
rightButtonEnabled: true,
|
||||||
rightButtonVisible: true,
|
rightButtonVisible: true,
|
||||||
rightButtonImage: Util.fetchFutureIcon(const Icon(Icons.info_outline, size: 20.0, color: Colors.white)),
|
rightButtonImage: Util.fetchFutureIcon(const Icon(Icons.help_outline, size: 20.0, color: Colors.white)),
|
||||||
rightButtonOnPressed: () async {
|
rightButtonOnPressed: () async {
|
||||||
await Util.startBrowser('https://app.assecutor.de/help/sb/app/context/001/index.html');
|
await Util.startBrowser('https://app.assecutor.de/help/sb/app/context/001/index.html');
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class AssignedJobsPage extends ContentViewWidget {
|
|||||||
'Zugewiesene Aufträge',
|
'Zugewiesene Aufträge',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 24.0,
|
fontSize: 20.0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
rightButtonEnabled: false,
|
rightButtonEnabled: false,
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ class FinishedJobsPage extends ContentViewWidget {
|
|||||||
'Erledigte Aufträge',
|
'Erledigte Aufträge',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 24.0,
|
fontSize: 20.0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
rightButtonEnabled: false,
|
rightButtonEnabled: false,
|
||||||
|
|||||||
@@ -235,22 +235,6 @@ class _MainPageState extends State<MainPage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*_test() async {
|
|
||||||
var json = await rootBundle.loadString('assets/job.json');
|
|
||||||
var jsonMap = jsonDecode(json);
|
|
||||||
var payload = jsonMap["payload"];
|
|
||||||
|
|
||||||
var jobsPayload = JobsPayload.fromJson(payload);
|
|
||||||
|
|
||||||
if (jobsPayload.jobs != null) {
|
|
||||||
MyApp.isarInstance.writeTxnSync(() {
|
|
||||||
for (var job in jobsPayload.jobs as List<Job>) {
|
|
||||||
MyApp.isarInstance.jobs.putSync(job);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
_initMessages() {
|
_initMessages() {
|
||||||
MessageService().subscribe<StatusInfoUpdate>(Constants.messageTopicStatusInfoUpdate, this, (statusInfoUpdateMessage) {
|
MessageService().subscribe<StatusInfoUpdate>(Constants.messageTopicStatusInfoUpdate, this, (statusInfoUpdateMessage) {
|
||||||
widget.sidValueNotifier.value = statusInfoUpdateMessage.status.sid;
|
widget.sidValueNotifier.value = statusInfoUpdateMessage.status.sid;
|
||||||
|
|||||||
@@ -26,12 +26,12 @@ class MessagesPage extends ContentViewWidget {
|
|||||||
'Nachrichten',
|
'Nachrichten',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 24.0,
|
fontSize: 20.0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
rightButtonEnabled: true,
|
rightButtonEnabled: true,
|
||||||
rightButtonVisible: true,
|
rightButtonVisible: true,
|
||||||
rightButtonImage: Util.fetchFutureIcon(const Icon(Icons.info_outline, size: 20.0, color: Colors.white)),
|
rightButtonImage: Util.fetchFutureIcon(const Icon(Icons.help_outline, size: 20.0, color: Colors.white)),
|
||||||
rightButtonOnPressed: () async {
|
rightButtonOnPressed: () async {
|
||||||
await Util.startBrowser('https://app.assecutor.de/help/sb/app/context/003/index.html');
|
await Util.startBrowser('https://app.assecutor.de/help/sb/app/context/003/index.html');
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -43,12 +43,12 @@ class TaskListPage extends ContentViewWidget {
|
|||||||
'Liste der Aufgaben',
|
'Liste der Aufgaben',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 24.0,
|
fontSize: 20.0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
rightButtonEnabled: true,
|
rightButtonEnabled: true,
|
||||||
rightButtonVisible: true,
|
rightButtonVisible: true,
|
||||||
rightButtonImage: Util.fetchFutureIcon(const Icon(Icons.info_outline, size: 20.0, color: Colors.white)),
|
rightButtonImage: Util.fetchFutureIcon(const Icon(Icons.help_outline, size: 20.0, color: Colors.white)),
|
||||||
rightButtonOnPressed: () async {
|
rightButtonOnPressed: () async {
|
||||||
await Util.startBrowser('https://app.assecutor.de/help/sb/app/context/002/index.html');
|
await Util.startBrowser('https://app.assecutor.de/help/sb/app/context/002/index.html');
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ class TourDetailsPage extends ContentViewWidget {
|
|||||||
'Details der Station',
|
'Details der Station',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 24.0,
|
fontSize: 20.0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
rightButtonEnabled: false,
|
rightButtonEnabled: false,
|
||||||
|
|||||||
@@ -27,12 +27,12 @@ class TourListPage extends ContentViewWidget {
|
|||||||
'Liste der Stationen',
|
'Liste der Stationen',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 24.0,
|
fontSize: 20.0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
rightButtonEnabled: true,
|
rightButtonEnabled: true,
|
||||||
rightButtonVisible: true,
|
rightButtonVisible: true,
|
||||||
rightButtonImage: Util.fetchFutureIcon(const Icon(Icons.info_outline, size: 20.0, color: Colors.white)),
|
rightButtonImage: Util.fetchFutureIcon(const Icon(Icons.help_outline, size: 20.0, color: Colors.white)),
|
||||||
rightButtonOnPressed: () async {
|
rightButtonOnPressed: () async {
|
||||||
await Util.startBrowser('https://app.assecutor.de/help/sb/app/context/004/index.html');
|
await Util.startBrowser('https://app.assecutor.de/help/sb/app/context/004/index.html');
|
||||||
});
|
});
|
||||||
|
|||||||
+13
-11
@@ -144,7 +144,7 @@ class MqttCore {
|
|||||||
_mqttClient.updates?.listen((List<MqttReceivedMessage<MqttMessage>> c) {
|
_mqttClient.updates?.listen((List<MqttReceivedMessage<MqttMessage>> c) {
|
||||||
try {
|
try {
|
||||||
final MqttPublishMessage message = c[0].payload as MqttPublishMessage;
|
final MqttPublishMessage message = c[0].payload as MqttPublishMessage;
|
||||||
final payload = MqttPublishPayload.bytesToStringAsString(message.payload.message);
|
String payload = utf8.decode(MqttPublishPayload.bytesToStringAsString(message.payload.message).codeUnits);
|
||||||
var topic = message.variableHeader?.topicName;
|
var topic = message.variableHeader?.topicName;
|
||||||
|
|
||||||
Util.logInfo('message received');
|
Util.logInfo('message received');
|
||||||
@@ -238,6 +238,14 @@ class MqttCore {
|
|||||||
MyApp.isarInstance.jobs.putSync(newJob);
|
MyApp.isarInstance.jobs.putSync(newJob);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (newJob.state == 0) {
|
||||||
|
if (newJob.global) {
|
||||||
|
await Util.playMp3('aaa.mp3');
|
||||||
|
} else {
|
||||||
|
await Util.playMp3('job_received.mp3');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MessageService().publish<JobReceivedMessage>(Constants.messageTopicJobReceived, arguments: JobReceivedMessage(job: newJob));
|
MessageService().publish<JobReceivedMessage>(Constants.messageTopicJobReceived, arguments: JobReceivedMessage(job: newJob));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -259,15 +267,7 @@ class MqttCore {
|
|||||||
void _syncRequestReceived(payloadData) async {
|
void _syncRequestReceived(payloadData) async {
|
||||||
Util.logInfo('_syncRequestReceived');
|
Util.logInfo('_syncRequestReceived');
|
||||||
|
|
||||||
/*for (var foundJobData in payloadData) {
|
_sendSyncMessage();
|
||||||
Job newJob = Job.fromJson(foundJobData);
|
|
||||||
|
|
||||||
await MyApp.isarInstance.writeTxn(() async {
|
|
||||||
await MyApp.isarInstance.jobs.put(newJob);
|
|
||||||
});
|
|
||||||
|
|
||||||
BroadcastReceiver().publish<JobReceivedMessage>(Constants.messageTopicJobReceived, arguments: JobReceivedMessage(job: newJob));
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _messageMessageReceived(Map<String, dynamic> payloadData) async {
|
void _messageMessageReceived(Map<String, dynamic> payloadData) async {
|
||||||
@@ -277,6 +277,8 @@ class MqttCore {
|
|||||||
await MyApp.isarInstance.messages.put(newMessage);
|
await MyApp.isarInstance.messages.put(newMessage);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await Util.playMp3('asbeep.mp3');
|
||||||
|
|
||||||
MessageService().publish<MessageReceivedMessage>(Constants.messageTopicMessageReceived, arguments: MessageReceivedMessage(message: newMessage));
|
MessageService().publish<MessageReceivedMessage>(Constants.messageTopicMessageReceived, arguments: MessageReceivedMessage(message: newMessage));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -400,7 +402,7 @@ class MqttCore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _cancelTrackTimer() {
|
void _cancelTrackTimer() {
|
||||||
if (_trackTimer != null) {
|
if (_trackTimer != null && _trackTimer!.isActive) {
|
||||||
_trackTimer!.cancel();
|
_trackTimer!.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-37
@@ -1,5 +1,6 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:audioplayers/audioplayers.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
@@ -181,45 +182,14 @@ class Util {
|
|||||||
throw Exception('Could not launch $websiteUrl');
|
throw Exception('Could not launch $websiteUrl');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Future<void> playMp3(String name) async {
|
||||||
|
final player = AudioPlayer();
|
||||||
|
await player.play(AssetSource('sounds/$name'), volume: 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget getDefaultButton(String text, Function() onPressed, {Image? image, double? buttonHeight}) {
|
Widget getDefaultButton(String text, Function() onPressed, {Image? image, double? buttonHeight}) {
|
||||||
/*return SizedBox(
|
|
||||||
height: buttonHeight ?? 60,
|
|
||||||
child: Stack(
|
|
||||||
fit: StackFit.expand,
|
|
||||||
children: [
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.all(0),
|
|
||||||
child: Expanded(
|
|
||||||
child: SizedBox(
|
|
||||||
height: 60,
|
|
||||||
child: ElevatedButton(
|
|
||||||
style: ButtonStyle(
|
|
||||||
shape: MaterialStateProperty.all<RoundedRectangleBorder>(
|
|
||||||
RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.circular(8.0),
|
|
||||||
side: const BorderSide(color: Colors.grey),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
backgroundColor: MaterialStateProperty.all<Color>(const Color.fromARGB(255, 220, 220, 220)),
|
|
||||||
foregroundColor: MaterialStateProperty.all<Color>(Colors.black),
|
|
||||||
),
|
|
||||||
onPressed: () {
|
|
||||||
onPressed();
|
|
||||||
},
|
|
||||||
child: Text(text)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Positioned(left: 20, top: 15, child: Center(child: image))
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);*/
|
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
height: buttonHeight ?? 50,
|
height: buttonHeight ?? 50,
|
||||||
child: MaterialButton(
|
child: MaterialButton(
|
||||||
@@ -244,7 +214,7 @@ Widget getDefaultButton(String text, Function() onPressed, {Image? image, double
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: Text(
|
child: Text(
|
||||||
text,
|
text,
|
||||||
style: const TextStyle(color: Colors.black, fontSize: 18.0),
|
style: const TextStyle(color: Colors.black, fontSize: 14.0),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -57,6 +57,62 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.11.0"
|
version: "2.11.0"
|
||||||
|
audioplayers:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: audioplayers
|
||||||
|
sha256: c05c6147124cd63e725e861335a8b4d57300b80e6e92cea7c145c739223bbaef
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.2.1"
|
||||||
|
audioplayers_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: audioplayers_android
|
||||||
|
sha256: b00e1a0e11365d88576320ec2d8c192bc21f1afb6c0e5995d1c57ae63156acb5
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.0.3"
|
||||||
|
audioplayers_darwin:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: audioplayers_darwin
|
||||||
|
sha256: "3034e99a6df8d101da0f5082dcca0a2a99db62ab1d4ddb3277bed3f6f81afe08"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.0.2"
|
||||||
|
audioplayers_linux:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: audioplayers_linux
|
||||||
|
sha256: "60787e73fefc4d2e0b9c02c69885402177e818e4e27ef087074cf27c02246c9e"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.0"
|
||||||
|
audioplayers_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: audioplayers_platform_interface
|
||||||
|
sha256: "365c547f1bb9e77d94dd1687903a668d8f7ac3409e48e6e6a3668a1ac2982adb"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.1.0"
|
||||||
|
audioplayers_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: audioplayers_web
|
||||||
|
sha256: "22cd0173e54d92bd9b2c80b1204eb1eb159ece87475ab58c9788a70ec43c2a62"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.1.0"
|
||||||
|
audioplayers_windows:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: audioplayers_windows
|
||||||
|
sha256: "9536812c9103563644ada2ef45ae523806b0745f7a78e89d1b5fb1951de90e1a"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.0"
|
||||||
badges:
|
badges:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -1197,6 +1253,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.0"
|
||||||
|
synchronized:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: synchronized
|
||||||
|
sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.0+1"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ dependencies:
|
|||||||
geolocator: ^10.1.0
|
geolocator: ^10.1.0
|
||||||
expandable: ^5.0.1
|
expandable: ^5.0.1
|
||||||
url_launcher: ^6.2.4
|
url_launcher: ^6.2.4
|
||||||
|
audioplayers: ^5.2.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
@@ -96,6 +97,7 @@ flutter:
|
|||||||
|
|
||||||
assets:
|
assets:
|
||||||
- assets/
|
- assets/
|
||||||
|
- assets/sounds/
|
||||||
|
|
||||||
# To add assets to your application, add an assets section, like this:
|
# To add assets to your application, add an assets section, like this:
|
||||||
# assets:
|
# assets:
|
||||||
|
|||||||
Reference in new issue
Block a user