UzMaps docs

uzmaps_ui

uzmaps_ui is the UzMaps design system for Flutter: the Material 3 theme built from uzmaps_core brand tokens, the component set (buttons, cards, chips, list rows, status pills, rating stars, avatars), the drag-sheet engine, toasts, skeletons and the motion widgets. Everything visual lives here so screens compose instead of styling.

bash
flutter pub add uzmaps_ui

Current release: v{{PKG_VER:flutter-ui}} · pub.dev: uzmaps_ui · source: packages/uzmaps_ui

The theme#

Two complete Material 3 themes, generated from the brand tokens — no hardcoded colors anywhere:

dart
MaterialApp(
  theme: UzTheme.light(),
  darkTheme: UzTheme.dark(),
  themeMode: ThemeMode.system,
)

Wrap the app in UzThemeProvider and any widget can read brand values through UzThemeProvider.of(context) — the bridge between the raw tokens in uzmaps_core and Flutter's ColorScheme.

Components#

ComponentWhat it is
UzButtonFilled/tonal/text buttons with the brand press motion.
UzCardSurface card with token radii and shadows.
UzChipSelectable filter chip for categories and modes.
UzListRowList row with leading icon, title, subtitle and trailing — the search-result workhorse.
UzStatusPillOpen/closed/closing-soon pill driven by OpenStatus.
UzRatingStarsRead-write star rating for the trip journal and place notes.
UzAvatarInitials avatar with brand palette rotation.
UzDragSheetThe drag-handle bottom sheet: anchored, peek-expanded, spring-settled.
UzToastsContext-free toast API — UzToasts.show(context, message).
EmptyState, ErrorState, OfflineBannerThe honest states: nothing here, that failed, you are offline.
dart
UzListRow(
  icon: UzIcons.cafe,
  title: result.name,
  subtitle: result.label,
  trailing: UzStatusPill(status: details.openStatus),
  onTap: () => openPlace(result),
);

Motion components#

Re-exported from uzmaps_core so apps import one package for anything visual:

WidgetWhat it does
PressableScaleSpring-scale press feedback on any child.
StaggeredListChildren enter in sequence when they first appear.
Skeleton / ShimmerLoading placeholders with the shimmer sweep.
FadeThroughCross-fade between states (the Material fade-through pattern).
CountUpTextNumbers count up to value — stats, distances, prices.
PulseMarkerThe pulsing dot for the user's location.
dart
StaggeredList(
  children: results.map((r) => UzListRow(...)).toList(),
);

Icons#

UzIcons covers the map domain — categories (cafe, hotel, pharmacy, fuel, …), navigation (drive, walk, cycle), UI glyphs (search, layers, bookmark) — drawn to match the map's own category sprites, so a search result's icon and its pin on the map agree.

Pairing#

Use it with uzmaps_core (it re-exports the token and motion types), or take whole screens from uzmaps_kit — every screen there is already built from these parts.

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