name: miler description: Miler Rider - Smarter Pickups, Powered by AI publish_to: "none" version: 1.2.35+151 environment: sdk: ^3.9.2 dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.8 qr_flutter: ^4.1.0 introduction_screen: ^4.0.0 smooth_page_indicator: ^1.2.1 get: ^4.7.2 http: ^1.2.2 device_info_plus: ^12.2.0 firebase_core: ^4.2.0 firebase_messaging: ^16.0.3 image_picker: ^1.1.2 shared_preferences: ^2.3.3 sms_autofill: ^2.3.0 webview_flutter: ^4.8.0 audioplayers: ^6.5.1 flutter_local_notifications: ^19.5.0 path_provider: ^2.1.4 geolocator: ^14.0.2 connectivity_plus: ^7.0.0 slide_to_submit_button: ^1.0.3 flutter_tts: ^4.0.2 vibration: ^3.1.4 contained_tab_bar_view: ^0.8.0 tab_indicator_styler: ^2.0.0 geocoding: ^4.0.0 fl_chart: ^1.1.1 battery_plus: ^7.0.0 provider: ^6.1.5+1 slider_button_lite: ^1.0.1 url_launcher: ^6.3.2 circular_countdown_timer: ^0.2.4 lottie: ^3.3.2 flutter_foreground_task: ^7.0.3 floating: ^6.0.0 bottom_sheet: ^4.0.4 wakelock_plus: ^1.1.1 minio: ^3.5.8 package_info_plus: ^8.0.0 flutter_native_splash: ^2.4.7 new_version_plus: ^0.1.1 raindrop_animated_splash_screen: ^0.0.2 alp_animated_splashscreen: ^0.0.6 flutter_slidable: ^4.0.3 animated_stack: ^0.3.3 flutter_screenutil: ^5.9.3 google_fonts: ^6.3.3 shimmer: ^3.0.0 skeletonizer: ^2.1.3 flutter_launcher_icons: ^0.14.4 scratcher: ^2.5.0 confetti: ^0.8.0 permission_handler: ^12.0.1 mqtt_client: ^10.3.0 flutter_map: ^8.3.1 latlong2: ^0.10.1 # The delivery line's maps. The parcel line draws its maps with flutter_map # (OSM tiles + OSRM, keyless — see views/helpers/widgets/miler_map.dart); the # ported delivery screens under lib/xpress were built against MapLibre and are # kept verbatim, so both engines ship. Only one line runs per session, so only # one is ever instantiated. maplibre_gl: ^0.26.2 animated_toggle_switch: ^0.8.7 another_flushbar: ^2.2.4 lucide_icons_flutter: ^3.1.17 tab_container: ^3.5.3 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^6.0.0 # The camera seam. StopVerificationPage's review step is only reachable once # a photo exists, so the tests swap ImagePickerPlatform.instance for a fake # that returns a file on disk. Test-only — the app talks to image_picker. image_picker_platform_interface: ^2.10.0 # ── The launcher icon looked small, and the manifest was not the reason ── # # `android:icon="@mipmap/ic_launcher"` only names the resource; how large the # mark *reads* on the home screen is decided by the artwork and by whether the # icon is adaptive. Both were working against it: # # 1. `doormile_icon.png` is 1024x1024 with the mark occupying 684px of it — # 170px of transparent margin on every side, so a third of the icon was # empty before Android touched it. # 2. There was no `adaptive_icon_foreground`, so no `mipmap-anydpi-v26` was # generated. Android 8+ falls back to *legacy treatment* for a plain PNG: # it shrinks the bitmap to roughly three-quarters and centres it on a white # rounded backdrop it draws itself. Stacked on the margin above, the mark # ended up at about half the width of the icons beside it. # # So the fix is two pre-sized sources, not a manifest attribute: # # • **foreground** — the mark alone at 61% of the canvas, which is the 66dp # safe zone of the 108dp adaptive canvas. Everything outside that is what # the launcher's mask cuts away, and a circle mask on this circular mark # now meets its edge. # • **legacy / iOS** — the mark at 80% on white, because neither is masked the # way an adaptive icon is and both are square. # # `adaptive_icon_foreground_inset: 0` because the padding is already baked into # the foreground at the exact safe-zone ratio; the tool's default 16 would add # a second margin and undo the change. # # `doormile_icon.png` is deliberately left alone — `flutter_native_splash` # below still uses it, and the splash wants the airier framing. # # The two generated sources live in `launcher_icon/` rather than # `assets/images/`, which is globbed wholesale into the bundle: they are # build-time inputs for this tool and have no business being shipped inside the # APK the tool produces. flutter_launcher_icons: android: true ios: true web: generate: true image_path: "launcher_icon/doormile_icon_legacy.png" image_path: "launcher_icon/doormile_icon_legacy.png" adaptive_icon_background: "#FFFFFF" adaptive_icon_foreground: "launcher_icon/doormile_icon_foreground.png" adaptive_icon_foreground_inset: 0 remove_alpha_ios: true flutter_native_splash: color: "#FFFFFF" image: assets/images/doormile_icon.png android_12: image: assets/images/doormile_icon.png icon_background_color: "#FFFFFF" flutter: uses-material-design: true assets: - assets/images/ - assets/audio/ - assets/lotties/ fonts: # The delivery line's typeface. The ported screens under lib/xpress read # FontConstants.fontFamily = 'Proxima Nova' on every text style; the files # were already in assets/fonts but the family was never declared, so without # this every delivery screen falls back to Roboto. - family: Proxima Nova fonts: - asset: assets/fonts/ProximaNova/proximanova_regular.ttf weight: 400 - asset: assets/fonts/ProximaNova/proximanova_bold.otf weight: 700 - family: Manrope fonts: - asset: assets/fonts/Manrope/Manrope-VF.ttf - family: PlusJakartaSans fonts: - asset: assets/fonts/PlusJakartaSans/PlusJakartaSans-VF.ttf # ── Declared, correct, and currently unused ── # # The parcel line reads Manrope (FontConstants.fontFamily) and the delivery # line reads Proxima Nova; nothing asks for Poppins today. It was briefly # made the app's typeface and reverted — it runs optically much heavier than # Manrope at every grade and turned the whole app bold. # # The declaration is kept because it is now correct and was not before: it # said `poppins` with a lowercase path on every asset, while the files on # disk are `assets/fonts/Poppins/Poppins-*.ttf`. Asset bundling is # case-sensitive on both platforms, so none of the seven resolved. Leaving # the fixed version here means the family is one string away if it is ever # wanted, instead of silently falling back again. # # All seven static weights are listed because Poppins ships as separate # files rather than a variable font the way Manrope does; without explicit # 800/900 entries Flutter synthesises them by smearing SemiBold. - family: Poppins fonts: - asset: assets/fonts/Poppins/Poppins-Light.ttf weight: 300 - asset: assets/fonts/Poppins/Poppins-Regular.ttf weight: 400 - asset: assets/fonts/Poppins/Poppins-Medium.ttf weight: 500 - asset: assets/fonts/Poppins/Poppins-SemiBold.ttf weight: 600 - asset: assets/fonts/Poppins/Poppins-Bold.ttf weight: 700 - asset: assets/fonts/Poppins/Poppins-ExtraBold.ttf weight: 800 - asset: assets/fonts/Poppins/Poppins-Black.ttf weight: 900