uzmaps_kit
uzmaps_kit is the map experience itself, as composable parts: the MapLibre map engine (carrying every
production fix the UzMaps apps earned on real devices), the app controller that wires data to screens, and
the full screen set — search, place, route, navigation, saved places, trips, settings, account, status and
credits. Host them in your app shell; nothing here constructs platform channels or reads dart-defines.
flutter pub add uzmaps_kitCurrent release: v{{PKG_VER:flutter-kit}} · pub.dev: uzmaps_kit ·
source: packages/uzmaps_kit
The map engine#
UzMapEngine is a ChangeNotifier owning the camera, pins, route lines and style; UzMapView renders it.
final engine = UzMapEngine(api: api);
UzMapView(
engine: engine,
dark: themeMode == ThemeMode.dark,
styleUrl: api.styleUrl(dark: themeMode == ThemeMode.dark),
myLocationEnabled: true,
onTap: (where) => resolveTap(where),
onStyleReady: () => engine.show(),
);| Member | What it does |
|---|---|
UzMapEngine(api) | Camera state, MapPin annotations, RouteLine routes, style lifecycle. |
UzMapView | The platform map. Carries the Android texture fixes, style-reload race fixes and camera-jank fixes from the shipping app. |
MapBubbles / PlaceBubble | The anchored bubble UI over pins, with its tail painter. |
RouteBadge, HeadingCompass | Drive-mode overlays. |
The app controller#
UzAppController binds everything together — API client, map engine, settings, saved places, trip
journal, recorder and server monitor — and exposes the state screens bind to:
final controller = UzAppController(
api: api,
engine: engine,
settings: settings, // AppSettings from uzmaps_core
saved: savedPlaces, // SavedPlaces
journal: tripJournal, // TripJournal
recorder: tripRecorder, // TripRecorder
monitor: serverMonitor, // ServerMonitor
);The screens#
Every screen the UzMaps app ships, ready to host:
| Screen | What you get |
|---|---|
UzHomeScreen + UzPanelScaffold | The map with the drag-panel scaffold, category chips and locate controls. |
search_sheet | Search with autocomplete, recent places and category browse. |
results_explore | Result lists over the map with selection sync. |
place_panel | Place details: photos, hours, phone, links, nearby, save/share/directions. |
route_panel | Route preview with alternatives, modes and the start-drive flow. |
saved_screen | Saved places, collections-friendly. |
trips_screen | The trip journal — history, stats, ratings and notes. |
settings_screen | Language, units, theme, keep-awake and data settings. |
account_panel | Account and stats summary. |
status_credits | Live deployment status plus data-source credits. |
They are widgets, not routes — push them in whatever navigation architecture your app uses, pass the controller, done.
Minimal app shell#
runApp(UzThemeProvider(
child: MaterialApp(
theme: UzTheme.light(),
darkTheme: UzTheme.dark(),
home: UzHomeScreen(controller: controller),
),
));That is the complete UzMaps app experience — map, search, place pages, routing, saved places and the trip journal — against your own key. The Navigator adds turn-by-turn driving on top with its own engine; the apps in this repository are the reference implementation of everything above.
Package set#
| Package | Role |
|---|---|
uzmaps_core | Tokens, motion, strings, geo, stores. |
uzmaps_api | The typed HTTP client. |
uzmaps_ui | Theme and components. |
uzmaps_kit | Screens and the map engine — this page. |