Flattern TextField-AutoVervollständigen-overlay
Ich bin kämpfen, zu erstellen Textfeld mit autocomplete-overlay.
Ich habe Formular mit Textfeldern und ich möchte die display-Vorschläge basierend auf der Eingabe in TextField.
Etwas wie dieses:
Autocomplete-TextField
Ich bin nicht sicher, was die Hierarchie der widgets Aussehen sollte, zu erreichen, Anzeige der Vorschläge-box über der anderen widgets. Sollte ich die Stack-widget, OverflowBox widget oder etwas anderes?
Jede Hilfe, die durch Hierarchie-Beispiel gewürdigt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Implementiert habe ich für meine app verwenden-Stack. TextFormField in einem container und ListTiles in einen anderen Behälter und die überlagerung der listtile als Benutzer-Typen auf den container der text-input-Feld. Man könnte prüfen,
meine app.
Den folgenden Beispiel-app verwendet Vorschläge als Benutzer-Typ aus der api-und display-Liste, die der Benutzer auswählen kann, indem Sie auf Tippen.
Code-Beispiel:
Implementierte ich ein Paket, flutter_typeahead, genau das zu tun. In diesem Paket, ich benutze Overlay.der(Kontext -).einfügen, die mir erlaubt, zu legen Sie in der Liste der Vorschläge in das Overlay, so dass Sie schweben über allen anderen widgets. Ich schrieb auch dieser Artikel zu erklären, wie Sie dazu im detail
Hätte ich wahrscheinlich einen Container mit fester Höhe, mit einer Spalte mit seinen crossAxisAlignment Satz zu dehnen. Das erste Kind in die Spalte wäre das Textfeld ein. Die zweite wäre eine Erweiterte mit einem ListView-Steuerelement mit einem benutzerdefinierten Delegaten zu den Kindern. Dann, als die Daten in das Textfeld ändert, aktualisieren Sie die Stellvertretung so, dass die Kinder-aktualisiert werden. Jedes Kind wäre ein ListTile enthält ein Tintenfass, die beim Tippen, füllt das Textfeld entsprechend.
Overlay.of(context).insert(entryWithExpandedListView);
?Können Sie Gebrauch machen von autocomplete_textfield Bibliothek zu erreichen.
Grundsätzliche Verwendung
Können Sie weitere Beispiele hier.
Eine Weitere Option
Können Sie auch Gebrauch machen von flutter_typeahead
Das funktionierte besser für mich, wenn die Arbeit mit
StreamBuilder
für Block-Muster.