Skip to content

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

DsSuggestion — interaktiv forhåndsvisning
Åpne i nytt vindu ↗

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