Pakete, Repositories und App-Kategorien suchen

Cover von dropdown_plus_plus
Paketdetailsv0.1.1+1

dropdown_plus_plus

Einfaches und einfach zu verwendendes Dropdown in Formularen mit Suche, Tastaturnavigation, lokaler Datenquelle, Remote-Datenquelle und einfacher Anpassung.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
14
Likes
11
Pub-Punkte
140

Paket installieren

flutter pub add dropdown_plus_plus

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

DropdownPlusPlus ist ein vielseitiges und benutzerfreundliches Dropdown-Widget für Flutter-Anwendungen, das für eine nahtlose Integration in Formulare entwickelt wurde. Es unterstützt Suchfunktionen, Tastaturnavigation sowie lokale und remote Datenquellen. Das Paket bietet umfangreiche Anpassungsmöglichkeiten und ist daher ideal für dynamische und reaktive Formular-Eingaben auf mehreren Plattformen. Mit einer sauberen API und minimalem Setup verbessert es die Benutzererfahrung, während es Entwicklern Flexibilität bietet.

Anwendungsfälle

  • Formulareingaben mit durchsuchbaren Dropdowns
  • Dynamisches Laden von Daten aus APIs
  • Offline-Datenauswahl in Formularen
  • Tastaturnavigierbare Dropdown-Menüs
  • Anpassbare Benutzeroberfläche für Dropdown-Elemente
  • Plattformübergreifende Formularkomponenten

Hauptmerkmale

  • Suchbarer Dropdown mit Echtzeitfilterung
  • Unterstützung für Remote- und lokale Datenquellen
  • Tastaturnavigation (Pfeiltasten, Enter)
  • Hochgradig anpassbare Erscheinung und Verhalten
  • Eingebaute Lade- und Fehlerzustände
  • Reaktionsfähiges Design für alle Plattformen

Geeignet für

  • Entwickler, die komplexe Formulare erstellen
  • Apps mit durchsuchbaren Dropdowns
  • Projekte mit Remote- oder Offline-Daten
  • Teams, die der plattformübergreifenden Konsistenz Priorität einräumen
  • UI-intensive Anwendungen, die flexible Dropdowns benötigen
  • Schnellprototypen mit wiederverwendbaren Formularkomponenten

Hinweise

  • Erfordert sorgfältige Behandlung des asynchronen Datenladens
  • Könnte zusätzliche Styling für komplexe Themen benötigen
  • Leistungseinbußen bei sehr großen Datensätzen
  • Beschränkte Dokumentation über die grundlegende Verwendung hinaus
  • Möglicher Bedarf an benutzerdefiniertem Scrollverhalten
  • Abhängig von externer Zustandsverwaltung für dynamische Aktualisierungen

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

dropdown_plus_plus

Simple and easy to use Dropdown in forms with search, keyboard navigation, offiline data source, remote data source and easy customization.

A maintained fork of dropdown_plus with a lot more customisations.

Getting Started

Simple Text Dropdown.

TextDropdownFormField(
  options: ["Male", "Female"],
  decoration: InputDecoration(
      border: OutlineInputBorder(),
      suffixIcon: Icon(Icons.arrow_drop_down),
      labelText: "Gender"),
  cursorColor: Colors.green,
  dropdownItemColor: Colors.red,
),

Install

packages.yaml
dropdown_plus_plus: <lastest version>

Customizable Example


 final List<Map<String, dynamic>> _roles = [
    {"name": "Super Admin", "desc": "Having full access rights", "role": 1},
    {
      "name": "Admin",
      "desc": "Having full access rights of a Organization",
      "role": 2
    },
    {
      "name": "Manager",
      "desc": "Having Magenent access rights of a Organization",
      "role": 3
    },
    {
      "name": "Technician",
      "desc": "Having Technician Support access rights",
      "role": 4
    },
    {
      "name": "Customer Support",
      "desc": "Having Customer Support access rights",
      "role": 5
    },
    {"name": "User", "desc": "Having End User access rights", "role": 6},
  ];


// ...
// ...

DropdownFormField<Map<String, dynamic>>(
    onEmptyActionPressed: () async {},
    dropdownItemSeparator: Divider(
      color: Colors.black,
      height: 1,
      ),
    decoration: InputDecoration(
        border: OutlineInputBorder(),
        suffixIcon: Icon(Icons.arrow_drop_down),
        labelText: "Access"),
    onSaved: (dynamic str) {},
    onChanged: (dynamic str) {},
    validator: (dynamic str) {},
    displayItemFn: (dynamic item) => Text(
    item['name'] ?? '',
    style: TextStyle(fontSize: 16),
    ),
    findFn: (dynamic str) async => _roles,
    filterFn: (dynamic item, str) =>
        item['name'].toLowerCase().indexOf(str.toLowerCase()) >= 0,
    dropdownItemFn: (dynamic item, position, focused,
            dynamic lastSelectedItem, onTap) =>
        ListTile(
    title: Text(item['name']),
    subtitle: Text(
        item['desc'] ?? '',
    ),
    tileColor:
        focused ? Color.fromARGB(20, 0, 0, 0) : Colors.transparent,
    onTap: onTap,
    ),
),

Options

final bool autoFocus;
final bool Function(dynamic item, String str)? filterFn;
final bool Function(dynamic item1, dynamic item2)? selectedFn;
final Future<List<dynamic>> Function(String str) findFn;

final ListTile Function(
  dynamic item,
  int position,
  bool focused,
  bool selected,
  Function() onTap,
) dropdownItemFn;

final Widget Function(dynamic item) displayItemFn;
final InputDecoration? decoration;
final Color? dropdownColor;
final Color? cursorColor;
final DropdownEditingController<T>? controller;
final void Function(dynamic item)? onChanged;
final void Function(dynamic)? onSaved;
final String? Function(T?)? validator;
final double? dropdownHeight;
final TextStyle? searchTextStyle;
final String emptyText;
final String emptyActionText;
final Future<void> Function(String)? onEmptyActionPressed;
final Widget? dropdownItemSeparator;

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden

Noch keine Daten verfügbar.