A347
This commit is contained in:
1 parent
206283c2ca
commit
e548f62bde
3 files changed
+31
-6
No files matched your search
@@ -233,6 +233,7 @@ class _AssignedJobsPageState extends State<AssignedJobsPage> with ProducerMixin,
|
||||
message.track = Track();
|
||||
message.track.time = Util.nowUnixSecondsUtc();
|
||||
message.track.pos = FinTaskPos();
|
||||
message.track.pos!.time = currentPosition != null ? Util.toUnixSecondsUtc(currentPosition.timestamp) : 0;
|
||||
message.track.pos!.lat = currentPosition != null ? currentPosition.latitude : 0.0;
|
||||
message.track.pos!.long = currentPosition != null ? currentPosition.longitude : 0.0;
|
||||
message.track.pos!.acc = currentPosition != null ? currentPosition.accuracy.toInt() : 0;
|
||||
|
||||
@@ -14,15 +14,18 @@ import 'package:stadtbote/tools/messages/job_received_message.dart';
|
||||
import 'package:stadtbote/tools/messages/refresh_badges_message.dart';
|
||||
import 'package:stadtbote/tools/messages/remove_job_message.dart';
|
||||
import 'package:stadtbote/tools/util.dart';
|
||||
import 'package:expandable/expandable.dart';
|
||||
|
||||
import '../tools/messages/publish_payload_message.dart';
|
||||
|
||||
final ScrollController _scrollController = ScrollController();
|
||||
|
||||
Future<void> showAcceptJobsPopup(SharedMapReference mapReference, Function() onFinished) async {
|
||||
ExtendendStatefulBuilder extendedStatefulBuilder;
|
||||
late ExtendendStatefulBuilder extendedStatefulBuilder;
|
||||
bool builderCreated = false;
|
||||
bool isActive = true;
|
||||
|
||||
return showDialog<void>(
|
||||
final dialogFuture = showDialog<void>(
|
||||
barrierDismissible: true,
|
||||
context: MyApp.appNavigatorKey.currentContext!,
|
||||
builder: (BuildContext context) {
|
||||
@@ -58,10 +61,13 @@ Future<void> showAcceptJobsPopup(SharedMapReference mapReference, Function() onF
|
||||
));
|
||||
});
|
||||
|
||||
builderCreated = true;
|
||||
|
||||
extendedStatefulBuilder.subscribe(
|
||||
queueId: Constants.messageTopicJobReceived,
|
||||
callback: (message) {
|
||||
var jobReceivedMessage = message.payload as JobReceivedMessage;
|
||||
if (!isActive || extendedStatefulBuilderStateSetter == null) return;
|
||||
if (jobReceivedMessage.job.state == 0) {
|
||||
extendedStatefulBuilderStateSetter!(() {});
|
||||
}
|
||||
@@ -72,10 +78,10 @@ Future<void> showAcceptJobsPopup(SharedMapReference mapReference, Function() onF
|
||||
queueId: Constants.messageTopicJobDeleted,
|
||||
callback: (message) {
|
||||
var jobDeletedMessage = message.payload as JobDeletedMessage;
|
||||
if (!isActive || extendedStatefulBuilderStateSetter == null) return;
|
||||
if (jobDeletedMessage.job.state == 0) {
|
||||
extendedStatefulBuilderStateSetter!(() {});
|
||||
}
|
||||
extendedStatefulBuilderStateSetter!(() {});
|
||||
},
|
||||
);
|
||||
|
||||
@@ -104,8 +110,11 @@ Future<void> showAcceptJobsPopup(SharedMapReference mapReference, Function() onF
|
||||
),
|
||||
),
|
||||
getDefaultButton("Liste schliessen", () {
|
||||
extendedStatefulBuilder.unsubscribe(queueId: Constants.messageTopicJobReceived);
|
||||
extendedStatefulBuilder.unsubscribe(queueId: Constants.messageTopicJobDeleted);
|
||||
isActive = false;
|
||||
if (builderCreated) {
|
||||
extendedStatefulBuilder.unsubscribe(queueId: Constants.messageTopicJobReceived);
|
||||
extendedStatefulBuilder.unsubscribe(queueId: Constants.messageTopicJobDeleted);
|
||||
}
|
||||
|
||||
Navigator.pop(context);
|
||||
|
||||
@@ -120,6 +129,21 @@ Future<void> showAcceptJobsPopup(SharedMapReference mapReference, Function() onF
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
// Ensure we always clean up subscriptions even if the dialog is dismissed via barrier tap or back button
|
||||
dialogFuture.whenComplete(() {
|
||||
isActive = false;
|
||||
if (builderCreated) {
|
||||
try {
|
||||
extendedStatefulBuilder.unsubscribe(queueId: Constants.messageTopicJobReceived);
|
||||
extendedStatefulBuilder.unsubscribe(queueId: Constants.messageTopicJobDeleted);
|
||||
} catch (_) {
|
||||
// ignore cleanup errors
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return dialogFuture;
|
||||
}
|
||||
|
||||
Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFinished, SharedMapReference mapReference) async {
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||
# In Windows, build-name is used as the major, minor, and patch parts
|
||||
# of the product and file versions while build-number is used as the build suffix.
|
||||
version: 346.0.0+346
|
||||
version: 347.0.0+347
|
||||
|
||||
environment:
|
||||
sdk: '>=3.5.0 <4.0.0'
|
||||
|
||||
Reference in new issue
Block a user