Implement iOS permissions, navigation improvements, and UI fixes
Add comprehensive iOS permission handling and enhance navigation UX: iOS Permissions Setup: - Configure Podfile with permission macros (PERMISSION_LOCATION, PERMISSION_CAMERA, PERMISSION_PHOTOS) - Add camera and photo library usage descriptions to Info.plist - Enable location, camera, and photos permissions for permission_handler plugin - Clean rebuild of iOS dependencies with updated configuration Navigation Enhancements: - Implement Google Navigation dark mode with custom map styling - Add loading overlay during navigation initialization with progress messages - Fix navigation flow with proper session initialization and error handling - Enable followMyLocation API for continuous driver location tracking - Auto-recenter camera on driver location when navigation starts - Add mounted checks to prevent unmounted widget errors UI/UX Improvements: - Fix layout overlapping issues between map, header, and footer - Add dynamic padding (110px top/bottom) to accommodate navigation UI elements - Reposition navigation buttons to prevent overlap with turn-by-turn instructions - Wrap DeliveriesPage body with SafeArea for proper system UI handling - Add loading states and disabled button behavior during navigation start Technical Details: - Enhanced error logging with debug messages for troubleshooting - Implement retry logic for navigation session initialization (30 retries @ 100ms) - Apply dark mode style with 500ms delay for proper map rendering - Use CameraPerspective.tilted for optimal driving view - Remove manual camera positioning in favor of native follow mode Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -70,7 +70,8 @@ class _DeliveriesPageState extends ConsumerState<DeliveriesPage> {
|
||||
title: Text(widget.routeName),
|
||||
elevation: 0,
|
||||
),
|
||||
body: deliveriesData.when(
|
||||
body: SafeArea(
|
||||
child: deliveriesData.when(
|
||||
data: (deliveries) {
|
||||
// Auto-scroll to first pending delivery when page loads or route changes
|
||||
if (_lastRouteFragmentId != widget.routeFragmentId) {
|
||||
@@ -167,6 +168,7 @@ class _DeliveriesPageState extends ConsumerState<DeliveriesPage> {
|
||||
child: Text('Error: $error'),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -286,6 +288,7 @@ class UnifiedDeliveryListView extends StatelessWidget {
|
||||
child: ListView.builder(
|
||||
controller: scrollController,
|
||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||
physics: const AlwaysScrollableScrollPhysics(),
|
||||
itemCount: deliveries.length,
|
||||
itemBuilder: (context, index) {
|
||||
final delivery = deliveries[index];
|
||||
|
||||
Reference in New Issue
Block a user