J'ai besoin d'utiliser une chaîne comme valeur dans la liste déroulante du battement. Mais retourne
Une autre exception a été lancée: 'Paquet: Flutter / SRC / Matériel / Dropdown.Dart': ASSERTION ÉCHELLE: LIGNE 609 POS 15: 'Articles == NULL || articles.Isempty || valeur == null || Articles.Où ((article DropdownMenuitem) => Item.Value == valeur) .length == 1 ': n'est pas vrai. P> blockQuote>
log ici . P>
Le code est p>
xxx pré> donc ma question dans: Comment puis-je utiliser une chaîne comme valeur d'élément? Une autre solution consiste à obtenir le texte de liste déroulante, mais je ne sais pas comment. P>
- solution - strong> p>
avec ce code je peux trouver tous les Éléments de la liste Datamaker qui ont le même texte que le menu déroulant. p>
xxx pré> p>
5 Réponses :
Vous pouvez essayer cette méthode, Thats comment j'utilise parfois.
Code peut contenir un problème BCZ, je l'ai créé dans un TextAditor normal. P>
items: (){ List<Widget> data = List<Widget>(); for(int i=0;i<dataMaker.length;i++){ data.add( DropdownMenuItem<String>( child: Text(item['fabricante'], textAlign: TextAlign.center), value: item['fabricante'], ); ); } return data; }
Essayez ceci espère que ses œuvres pour vous:
new DropdownButton( value: _current, items: dataMaker.map((item) { return new DropdownMenuItem<String>( child: new Text(item.fabricante, textAlign: TextAlign.center), value: item.fabricante, //FAIL ); }).toList(), onChanged: (selected) => setState(() { _current = selected; });
Je ne sais pas comment la bibliothèque fait la comparaison mais j'ai constaté que bien que la valeur soit à la liste, elle a toujours renvoyé l'erreur, je devais donc faire une comparaison manuelle. Remarque: Cuildype code> est juste un type de données personnalisé.
Voici la ligne magique pour mon cas:
Valeur: SelecteyType == null? SELECTELTTYPE: ConstructionTypes.Où ((i) => i.Name == Sexetype.name) .First comme ConstruireType, CODE>
return DropdownButton<T>(
hint: Text("Select Building type"),
value: selectedType == null ? selectedType : buildingTypes.where( (i) => i.name == selectedType.name).first as BuildingType,
onChanged: handleBuildingTypeChange,
items: abcList.map((T value) {
return DropdownMenuItem<T>(
value: value,
child: Row(
children: <Widget>[
SizedBox(
width: 10,
),
Text(
value.name,
style: TextStyle(color: Colors.black),
),
],
),
);
}).toList(),
);
Cette réponse doit être vérifiée. Merci@denn
ici fonctionne bien,
Le widget code> dropdownbutton code> a l'assertion suivante dans cette affirmation, la partie suivante échoue et renvoie la liste vide p> Dans mon cas, j'utilisais un objet d'une classe contenant plusieurs autres propriétés
Je remplace l'opérateur == code> pour cette classe et cela a fonctionné!
Voici un exemple d'opérateur remplacer par p>
Vérifiez ma réponse à cette question Stackoverflow.com/a/56049765/2315974 . Est le même problème que vous avez.