UzMaps docs

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.

bash
flutter pub add uzmaps_kit

Current 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.

dart
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(),
);
MemberWhat it does
UzMapEngine(api)Camera state, MapPin annotations, RouteLine routes, style lifecycle.
UzMapViewThe platform map. Carries the Android texture fixes, style-reload race fixes and camera-jank fixes from the shipping app.
MapBubbles / PlaceBubbleThe anchored bubble UI over pins, with its tail painter.
RouteBadge, HeadingCompassDrive-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:

dart
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:

ScreenWhat you get
UzHomeScreen + UzPanelScaffoldThe map with the drag-panel scaffold, category chips and locate controls.
search_sheetSearch with autocomplete, recent places and category browse.
results_exploreResult lists over the map with selection sync.
place_panelPlace details: photos, hours, phone, links, nearby, save/share/directions.
route_panelRoute preview with alternatives, modes and the start-drive flow.
saved_screenSaved places, collections-friendly.
trips_screenThe trip journal — history, stats, ratings and notes.
settings_screenLanguage, units, theme, keep-awake and data settings.
account_panelAccount and stats summary.
status_creditsLive 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#

dart
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#

PackageRole
uzmaps_coreTokens, motion, strings, geo, stores.
uzmaps_apiThe typed HTTP client.
uzmaps_uiTheme and components.
uzmaps_kitScreens and the map engine — this page.

Map data © OpenStreetMap contributors, licensed under the ODbL. © 2026 National Development Community.