Flutter — `gds_flutter`
Acest conținut nu este încă disponibil în limba selectată.
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| API | Rol |
|---|---|
GdsTheme.light({ accent }) | ThemeData M3 light din accente GDS |
GdsTheme.dark({ accent }) | ThemeData M3 dark (slate surfaces, soft semantics) |
GdsAccentName | indigo | emerald | amber | rose |
GdsColors.of(context) | Neutrals theme-aware (light/dark) |
GdsColors / GdsSpace / GdsRadii | Light aliases + spațiere |
Structure (shell)
Section titled “Structure (shell)”| Widget | BlockKind | Rol |
|---|---|---|
GdsHeader | header | App bar mobil |
GdsBottomMenu | bottom-menu | Bottom nav 2–5 taburi |
GdsFooter | footer | Chrome inferior: butoane sau gol |
GdsNavDrawer | nav-drawer | Drawer lateral |
GdsTabBar | tab-bar | Taburi conținut |
GdsFab | fab | Floating action |
GdsSectionHeader | section-header | Antet de grup |
Blocks (atomi)
Section titled “Blocks (atomi)”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
Records / collaboration
Section titled “Records / collaboration”Set pentru aplicațiile cu liste de entități care se atașează reciproc (întâlniri ↔ proiecte ↔ echipe ↔ persoane):
| Widget | Slug | Rol |
|---|---|---|
GdsEntityCard (+ GdsEntityMeta) | entity-card | Card generic de listă: avatar/glifă, titlu, descriere, pastile de contoare |
GdsRelationChips (+ GdsRelationItem) | relation-chips | Secțiune de atașări de un tip, cu chip-uri removabile și „+N” |
GdsMultiSelectList (+ GdsSelectableOption) | multi-select | Alegere multiplă cu căutare, în bottom sheet |
GdsStatGrid (+ GdsStatItem) | stat-grid | Grilă KPI responsivă (2/3/4 coloane), celule tapabile |
GdsDocumentTile | document-tile | Fișier atașat: badge de extensie, dimensiune, ștergere |
GdsListSkeleton | list-skeleton | Substituenți shimmer pentru prima pagină a unei liste |
Audio & transfer
Section titled “Audio & transfer”| Widget | Slug | Rol |
|---|---|---|
GdsAudioRecorderPanel (+ GdsRecorderPhase) | audio-recorder | Captură live: cronometru, nivel, transport |
GdsAudioPlayerBar | audio-player-bar | Redare: scrub, ±15 s, stare „audio indisponibil” |
GdsUploadTile (+ GdsUploadPhase) | upload-tile | Transfer de fișier: progres, anulare, reîncercare |
Assistant
Section titled “Assistant”| Widget | Slug | Rol |
|---|---|---|
GdsChatBubble / GdsChatComposer / GdsChatTypingIndicator | chat-thread | Fir de conversație cu asistentul (pereche a blocului web chat) |
GdsAiAgentCard | ai-agent-card | Card de intrare pe Dashboard spre ecranul asistentului AI |
Identity
Section titled “Identity”| Widget | Slug | Rol |
|---|---|---|
GdsAccountButton | account-button | „Intră ca |
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 / API | Rol |
|---|---|
GdsTransientBanner | Mesaj după acțiune; se stinge după kGdsNoticeDuration |
GdsEmptyPaneFooter | Footer gol la înălțimea GdsBottomNav |
GdsSettingsCheckOptionRow | Rând selectabil în Setări (icon · titlu · checkbox) |
GdsEdgeBannerOverlay | Banner top/bottom fără să împingă layout-ul (offline) |
DisplayPosture / PaneController / PaneNavigator / TwoPaneLayout | Shell 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/).