DsSuggestion
Forslagskomponent med autofullføringsforslag.
Bruk
Når bør du bruke DsSuggestion?
- Når brukeren skal velge fra en lang liste med kjente verdier, f.eks. kommuner eller land.
- Når du ønsker å hjelpe brukeren med å fylle ut et felt raskere via autofullføring.
- Når du kombinerer fritekstinndata med forhåndsdefinerte valg.
Når bør du unngå DsSuggestion?
- Når valgmulighetene er få (under 5). Bruk heller radioknapper eller en nedtrekksmeny.
- Når brukeren ikke skal kunne skrive fri tekst, men kun velge fra listen. Bruk heller en nedtrekksmeny.
Eksempler
Grunnleggende bruk
Hvert valg oppgis som en DsSuggestionOption<T> med en value (verdien som rapporteres tilbake) og en label (teksten som vises i listen). onSelectedChanged kalles med hele den valgte listen hver gang utvalget endres.
dart
DsSuggestion<String>(
options: const [
DsSuggestionOption(value: 'oslo', label: 'Oslo'),
DsSuggestionOption(value: 'bergen', label: 'Bergen'),
DsSuggestionOption(value: 'trondheim', label: 'Trondheim'),
DsSuggestionOption(value: 'stavanger', label: 'Stavanger'),
],
onSelectedChanged: (valgte) => velgKommune(valgte),
)Flervalg med fjernbare brikker
Med multiple: true kan brukeren velge flere verdier, som vises som fjernbare brikker over feltet.
dart
DsSuggestion<String>(
multiple: true,
options: const [
DsSuggestionOption(value: 'norge', label: 'Norge'),
DsSuggestionOption(value: 'sverige', label: 'Sverige'),
DsSuggestionOption(value: 'danmark', label: 'Danmark'),
DsSuggestionOption(value: 'finland', label: 'Finland'),
DsSuggestionOption(value: 'island', label: 'Island'),
],
onSelectedChanged: (valgte) => velgLand(valgte),
)Med mulighet for å opprette nye verdier
Med creatable: true (krever onCreate) får brukeren en «opprett»-rad når søket ikke har et eksakt treff. Bruk createLabel for å overstyre teksten på raden (standard er Opprett "<søk>").
dart
DsSuggestion<String>(
creatable: true,
onCreate: (sok) => sok,
createLabel: (sok) => 'Legg til «$sok»',
options: const [
DsSuggestionOption(value: 'oslo', label: 'Oslo'),
DsSuggestionOption(value: 'bergen', label: 'Bergen'),
],
onSelectedChanged: (valgte) => velgKommune(valgte),
)Med egendefinert størrelse og tom-tilstand
dart
DsSuggestion<String>(
size: DsSize.lg,
emptyText: 'Fant ingen kommuner',
options: const [
DsSuggestionOption(value: 'norge', label: 'Norge'),
DsSuggestionOption(value: 'sverige', label: 'Sverige'),
],
onSelectedChanged: (valgte) => velgLand(valgte),
)Retningslinjer
- Sørg for at forslagslisten er sortert logisk, f.eks. alfabetisk eller etter relevans.
- Vis maksimalt 5-10 forslag om gangen for å unngå overveldende lister.
- Gi tydelig visuell tilbakemelding når et forslag er valgt.
Tekst
- Forslagene bør være konsistente i format og lengde.
- Bruk fullstendige navn fremfor forkortelser i forslagslisten.
Har du innspill til denne komponenten? Send innspill på GitHub