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.
flutter pub add uzmaps_uiCurrent 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:
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#
| Component | What it is |
|---|---|
UzButton | Filled/tonal/text buttons with the brand press motion. |
UzCard | Surface card with token radii and shadows. |
UzChip | Selectable filter chip for categories and modes. |
UzListRow | List row with leading icon, title, subtitle and trailing — the search-result workhorse. |
UzStatusPill | Open/closed/closing-soon pill driven by OpenStatus. |
UzRatingStars | Read-write star rating for the trip journal and place notes. |
UzAvatar | Initials avatar with brand palette rotation. |
UzDragSheet | The drag-handle bottom sheet: anchored, peek-expanded, spring-settled. |
UzToasts | Context-free toast API — UzToasts.show(context, message). |
EmptyState, ErrorState, OfflineBanner | The honest states: nothing here, that failed, you are offline. |
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:
| Widget | What it does |
|---|---|
PressableScale | Spring-scale press feedback on any child. |
StaggeredList | Children enter in sequence when they first appear. |
Skeleton / Shimmer | Loading placeholders with the shimmer sweep. |
FadeThrough | Cross-fade between states (the Material fade-through pattern). |
CountUpText | Numbers count up to value — stats, distances, prices. |
PulseMarker | The pulsing dot for the user's location. |
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.