* Task/Ticket desktop dialogs — widened from 520 → 600dp, and tasks now uses SizedBox(width: 600) instead of ConstrainedBox(maxWidth:) which was the root cause of the "still small" issue (max-only never forced expansion)

* Pass Slip + Leave — both dialogs gained an isSheet flag; callers now branch on AppBreakpoints.tablet: bottom sheet on mobile, dialog on desktop
This commit is contained in:
2026-04-30 06:45:51 +08:00
parent 48cd3bcd60
commit 783c5eb0be
19 changed files with 1224 additions and 887 deletions
+13
View File
@@ -1,3 +1,5 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_quill/flutter_quill.dart';
@@ -41,6 +43,17 @@ class TasqApp extends ConsumerWidget {
} else {
await stopBackgroundLocationUpdates();
}
// Pre-warm the enrolled-face cache so offline face matching has bytes
// to compare against. No-op on web, or when cache is up-to-date.
if (profile != null && profile.hasFaceEnrolled) {
unawaited(
prewarmEnrolledFaceCache(
controller: ref.read(profileControllerProvider),
userId: profile.id,
enrolledAt: profile.faceEnrolledAt?.toIso8601String(),
),
);
}
});
return MaterialApp.router(