Skip to content

Flutter — `gds_flutter`

Subset mobil nativ al GDS: theme tokens + 50+ widget-uri Material 3, aliniate cu @gstack/gds-core. În Constructor, paleta Flutter (ecran mobil) expune FLUTTER_BLOCK_KINDS — chrome (header, bottom-menu) + atomi mobili din flutter-catalog.ts.

Doar GitLab git (govtech/gstack/gstyle) — nu pub.dev. ref = același tag de release ca npm:

dependencies:
gds_flutter:
git:
url: git@git.esempla.systems:govtech/gstack/gstyle.git
path: projects/gds_flutter
ref: v0.0.7
APIRol
GdsTheme.light({ accent })ThemeData M3 light din accente GDS
GdsTheme.dark({ accent })ThemeData M3 dark (slate surfaces, soft semantics)
GdsAccentNameindigo | emerald | amber | rose
GdsColors.of(context)Neutrals theme-aware (light/dark)
GdsColors / GdsSpace / GdsRadiiLight aliases + spațiere
WidgetBlockKindRol
GdsHeaderheaderApp bar mobil
GdsBottomMenubottom-menuBottom nav 2–5 taburi
GdsFooterfooterChrome inferior: butoane sau gol
GdsNavDrawernav-drawerDrawer lateral
GdsTabBartab-barTaburi conținut
GdsFabfabFloating action
GdsSectionHeadersection-headerAntet de grup

Navigare: GdsSearchBar, GdsSegmented, GdsChipFilter, GdsStepper, GdsMobileBreadcrumb
Inputs: GdsSelectionSection, GdsLanguagePicker, GdsTextField, GdsPasswordField, GdsOtpField, GdsPhoneField, GdsSearchField, GdsCheckbox, GdsRadioGroup, GdsSwitchTile, GdsSliderField, GdsDateField, GdsTimeField, GdsSelectField, GdsLanguagePicker, GdsFormSection
Butoane: GdsPrimaryButton / Secondary / Ghost / Danger, GdsIconButton, GdsButtonGroup, GdsSpeedDial
Liste: GdsListTile, GdsAvatarList, GdsSwipeTile, GdsEmptyState, GdsLoadMore, GdsSettingsGroup
Carduri: GdsInfoCard, GdsMediaCard, GdsStatTile, GdsExpandable, GdsProfileCard, GdsProfileHeader
Feedback: showGdsSnackBar / Success / Error (GdsSnackBarTone = web toast), GdsBanner / GdsAlert (info|warning|success|error = web alert), dialog / bottom sheet / action sheet, progress, skeleton, badge, chip
Media / charts: GdsAvatar, GdsImagePlaceholder, GdsIconTile, GdsDivider, GdsMiniBarChart, GdsProgressRing, GdsSparkline, GdsCalendar (= web gds-calendar)
Auth: GdsAuthGate (shared auth-gate), GdsDeviceAuth (shared device-auth / model+IMEI), atomi: GdsPinPad, GdsAuthHeader

Set pentru aplicațiile cu liste de entități care se atașează reciproc (întâlniri ↔ proiecte ↔ echipe ↔ persoane):

WidgetSlugRol
GdsEntityCard (+ GdsEntityMeta)entity-cardCard generic de listă: avatar/glifă, titlu, descriere, pastile de contoare
GdsRelationChips (+ GdsRelationItem)relation-chipsSecțiune de atașări de un tip, cu chip-uri removabile și „+N”
GdsMultiSelectList (+ GdsSelectableOption)multi-selectAlegere multiplă cu căutare, în bottom sheet
GdsStatGrid (+ GdsStatItem)stat-gridGrilă KPI responsivă (2/3/4 coloane), celule tapabile
GdsDocumentTiledocument-tileFișier atașat: badge de extensie, dimensiune, ștergere
GdsListSkeletonlist-skeletonSubstituenți shimmer pentru prima pagină a unei liste
WidgetSlugRol
GdsAudioRecorderPanel (+ GdsRecorderPhase)audio-recorderCaptură live: cronometru, nivel, transport
GdsAudioPlayerBaraudio-player-barRedare: scrub, ±15 s, stare „audio indisponibil”
GdsUploadTile (+ GdsUploadPhase)upload-tileTransfer de fișier: progres, anulare, reîncercare
WidgetSlugRol
GdsChatBubble / GdsChatComposer / GdsChatTypingIndicatorchat-threadFir de conversație cu asistentul (pereche a blocului web chat)
GdsAiAgentCardai-agent-cardCard de intrare pe Dashboard spre ecranul asistentului AI
WidgetSlugRol
GdsAccountButtonaccount-button„Intră ca ”: avatar, linie de identificare, badge, stare de progres

Contractele de date pe canvas: MobileBlockData (+ HeaderData / BottomMenuData). Preview HTML: renderFlutterMobileBlock.

Vezi inventarul complet în catalogul Constructor (platformă Mobile) și în FLUTTER_MOBILE_CATALOG.

Documentația per componentă (oameni + agenți): components/mobile/<slug>/<slug>.md, lângă stub-ul .dart și metadata .json.

Shared app chrome (unificat din MeetRecorder / Ultra Charge)

Section titled “Shared app chrome (unificat din MeetRecorder / Ultra Charge)”
Widget / APIRol
GdsTransientBannerMesaj după acțiune; se stinge după kGdsNoticeDuration
GdsEmptyPaneFooterFooter gol la înălțimea GdsBottomNav
GdsSettingsCheckOptionRowRând selectabil în Setări (icon · titlu · checkbox)
GdsEdgeBannerOverlayBanner top/bottom fără să împingă layout-ul (offline)
DisplayPosture / PaneController / PaneNavigator / TwoPaneLayoutShell adaptiv telefon · fold · tabletă

App-urile nu reimplementează aceste piese — import din package:gds_flutter/gds_flutter.dart (sau re-export subțire în lib/src/app/adaptive/).