Wie die Umsetzung drop-down-Liste im flattern?
Habe ich eine Liste von Orten, die ich umsetzen will, als eine dropdown-Liste in Flattern. Im ziemlich neu in der Sprache. Hier ist, was ich getan habe.
new DropdownButton(
value: _selectedLocation,
onChanged: (String newValue) {
setState(() {
_selectedLocation = newValue;
});
},
items: _locations.map((String location) {
return new DropdownMenuItem<String>(
child: new Text(location),
);
}).toList(),
Dies ist meine Liste der Elemente:
List<String> _locations = ['A', 'B', 'C', 'D'];
Und ich erhalte die folgende Fehlermeldung.
Another exception was thrown: 'package:flutter/src/material/dropdown.dart': Failed assertion: line 468 pos 15: 'value == null || items.where((DropdownMenuItem<T> item) => item.value == value).length == 1': is not true.
Ich nehme an, der Wert _selectedLocation
ist immer null. Aber ich bin Initialisierung es so gerne.
String _selectedLocation = 'Please choose a location';
InformationsquelleAutor Chaythanya nair | 2018-03-14
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese
value : value
imDropdownMenuItem
. Noch immer die gleichen Fehler. Denke, dass einige Fehler mitvalue : _selectedLocation
in den dropdownbutton fest.InformationsquelleAutor Pravin Raj
Müssen Sie
value: location
im code zu arbeiten. Überprüfen Sie diese.InformationsquelleAutor DwlRathod
müssen Sie dies berücksichtigen (aus dropdownbutton fest docs):
Also im Grunde haben Sie diese Liste von strings
Und Ihren Wert in Dropdown value-Eigenschaft initialisiert ist so:
Nur versuchen, mit dieser Liste:
Das sollte funktionieren 🙂
Schauen Sie sich auch den "hint" - Eigenschaft, wenn Sie nicht möchten, hinzufügen einer Zeichenfolge, wie das (aus der Liste Kontext), die Sie gehen könnte mit etwas wie dieses:
InformationsquelleAutor Rubs
Zuerst von allen, lassen Sie uns untersuchen, was die Fehlermeldung sagt (ich habe zitiert, der Fehler, der geworfen wird mit Flattern 1.2, aber die Idee ist die gleiche):
Gibt es vier
or
Bedingungen. Mindestens eines davon muss erfüllt sein:DropdownMenuItem
widgets) zur Verfügung gestellt wurden. Dadurch entfälltitems == null
.items.isEmpty
._selectedLocation
) war auch gegeben. Dadurch entfälltvalue == null
. Beachten Sie, dass diesDropdownButton
's Wert, nichtDropdownMenuItem
's Wert.Daher nur die Letzte Prüfung ist Links. Es läuft darauf hinaus, etwas wie:
Den code präsentiert wird, gibt es nicht eine
DropdownMenuItem
widget, das einen Wert hat, der_selectedLocation
. Stattdessen werden alle widgets haben Ihre Wertnull
. Danull != _selectedLocation
letzten Bedingung nicht. Überprüfen Sie dies, indem Sie_selectedLocation
zunull
- die app laufen soll.Um das Problem zu lösen, müssen wir zunächst einen Wert festlegen, der auf jeder
DropdownMenuItem
(so, dass etwas sein könnte übergebenonChanged
callback):Die app immer noch nicht. Dieses ist, weil Ihre Liste noch nicht enthalten
_selectedLocation
's Wert. Sie können die app auf zwei Arten arbeiten:items.where((DropdownMenuItem<T> item) => item.value == value).length == 1
). Könnte nützlich sein, wenn Sie wollen, lassen Sie den Benutzer, wählen Sie erneutPlease choose a location
option.hint:
paremter und setzenselectedLocation
zunull
(zu befriedigenvalue == null
Zustand). Nützlich, wenn Sie nicht wollenPlease choose a location
bleiben eine option.Finden Sie den code unten zeigt, wie es zu tun:
InformationsquelleAutor cegas
Stelle der Wert innerhalb der Elemente.dann wird es funktionieren,
InformationsquelleAutor Ajit Paul
Können Sie
DropDownButton
- Klasse, um zu schaffen drop-down-Liste :finden Sie auf dieser flattern web-Seite
InformationsquelleAutor user4757345
Ich Stand vor einem ähnlichen Problem mit dem dropdownbutton fest wenn ich versuche, die Anzeige einer dynamischen Liste von strings in der dropdown-Liste. Ich landete ein plugin erstellen : flutter_search_panel. Nicht ein dropdown-plugin, aber Sie können die Elemente anzuzeigen, die mit der suchen-Funktion.
Verwenden Sie den folgenden code für die Verwendung der widget :
InformationsquelleAutor dranzer
Lassen Sie uns sagen, wir schaffen ein drop-down-Liste die Währung:
Fügen Sie folgenden code im body-Teil:
InformationsquelleAutor lavish
Die Fehler, die Sie erhalten, durch Fragen, die für eine Eigenschaft ein null-Objekt. Ihr Artikel muss null sein, also bei der Frage nach seinem Wert zu vergleichen, Sie werden immer diesen Fehler. Überprüfen Sie, dass Sie Daten oder Ihre Liste ist eine Liste von Objekten und nicht einfach nur strings.
InformationsquelleAutor Matias
Als ich lief in dieses Problem, zu wollen, eine weniger generische DropdownStringButton, die ich gerade erstellt:
dropdown_string_button.dart
InformationsquelleAutor Cirec Beback
Hatte es mir passiert, wenn ich ersetzen Sie den Standardwert mit einem neuen dynamischen Wert. Aber irgendwie kann code abhängig von der default-Wert. So versuchen Sie halten eine Konstante mit default-Wert irgendwo gespeichert fallback.
InformationsquelleAutor Vijay Kumar Kanta
Ändern
Zu
_selectedLocation Bedürfnisse, die einen Teil Ihrer posten-Liste;
InformationsquelleAutor sammyni