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 = Track();
|
||||||
message.track.time = Util.nowUnixSecondsUtc();
|
message.track.time = Util.nowUnixSecondsUtc();
|
||||||
message.track.pos = FinTaskPos();
|
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!.lat = currentPosition != null ? currentPosition.latitude : 0.0;
|
||||||
message.track.pos!.long = currentPosition != null ? currentPosition.longitude : 0.0;
|
message.track.pos!.long = currentPosition != null ? currentPosition.longitude : 0.0;
|
||||||
message.track.pos!.acc = currentPosition != null ? currentPosition.accuracy.toInt() : 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/refresh_badges_message.dart';
|
||||||
import 'package:stadtbote/tools/messages/remove_job_message.dart';
|
import 'package:stadtbote/tools/messages/remove_job_message.dart';
|
||||||
import 'package:stadtbote/tools/util.dart';
|
import 'package:stadtbote/tools/util.dart';
|
||||||
|
import 'package:expandable/expandable.dart';
|
||||||
|
|
||||||
import '../tools/messages/publish_payload_message.dart';
|
import '../tools/messages/publish_payload_message.dart';
|
||||||
|
|
||||||
final ScrollController _scrollController = ScrollController();
|
final ScrollController _scrollController = ScrollController();
|
||||||
|
|
||||||
Future<void> showAcceptJobsPopup(SharedMapReference mapReference, Function() onFinished) async {
|
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,
|
barrierDismissible: true,
|
||||||
context: MyApp.appNavigatorKey.currentContext!,
|
context: MyApp.appNavigatorKey.currentContext!,
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
@@ -58,10 +61,13 @@ Future<void> showAcceptJobsPopup(SharedMapReference mapReference, Function() onF
|
|||||||
));
|
));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
builderCreated = true;
|
||||||
|
|
||||||
extendedStatefulBuilder.subscribe(
|
extendedStatefulBuilder.subscribe(
|
||||||
queueId: Constants.messageTopicJobReceived,
|
queueId: Constants.messageTopicJobReceived,
|
||||||
callback: (message) {
|
callback: (message) {
|
||||||
var jobReceivedMessage = message.payload as JobReceivedMessage;
|
var jobReceivedMessage = message.payload as JobReceivedMessage;
|
||||||
|
if (!isActive || extendedStatefulBuilderStateSetter == null) return;
|
||||||
if (jobReceivedMessage.job.state == 0) {
|
if (jobReceivedMessage.job.state == 0) {
|
||||||
extendedStatefulBuilderStateSetter!(() {});
|
extendedStatefulBuilderStateSetter!(() {});
|
||||||
}
|
}
|
||||||
@@ -72,10 +78,10 @@ Future<void> showAcceptJobsPopup(SharedMapReference mapReference, Function() onF
|
|||||||
queueId: Constants.messageTopicJobDeleted,
|
queueId: Constants.messageTopicJobDeleted,
|
||||||
callback: (message) {
|
callback: (message) {
|
||||||
var jobDeletedMessage = message.payload as JobDeletedMessage;
|
var jobDeletedMessage = message.payload as JobDeletedMessage;
|
||||||
|
if (!isActive || extendedStatefulBuilderStateSetter == null) return;
|
||||||
if (jobDeletedMessage.job.state == 0) {
|
if (jobDeletedMessage.job.state == 0) {
|
||||||
extendedStatefulBuilderStateSetter!(() {});
|
extendedStatefulBuilderStateSetter!(() {});
|
||||||
}
|
}
|
||||||
extendedStatefulBuilderStateSetter!(() {});
|
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -104,8 +110,11 @@ Future<void> showAcceptJobsPopup(SharedMapReference mapReference, Function() onF
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
getDefaultButton("Liste schliessen", () {
|
getDefaultButton("Liste schliessen", () {
|
||||||
extendedStatefulBuilder.unsubscribe(queueId: Constants.messageTopicJobReceived);
|
isActive = false;
|
||||||
extendedStatefulBuilder.unsubscribe(queueId: Constants.messageTopicJobDeleted);
|
if (builderCreated) {
|
||||||
|
extendedStatefulBuilder.unsubscribe(queueId: Constants.messageTopicJobReceived);
|
||||||
|
extendedStatefulBuilder.unsubscribe(queueId: Constants.messageTopicJobDeleted);
|
||||||
|
}
|
||||||
|
|
||||||
Navigator.pop(context);
|
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 {
|
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
|
# 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
|
# 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.
|
# 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:
|
environment:
|
||||||
sdk: '>=3.5.0 <4.0.0'
|
sdk: '>=3.5.0 <4.0.0'
|
||||||
|
|||||||
Reference in new issue
Block a user