-1
votes

Paillonnez - Valeur déroulante

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.

log ici .

Le code est xxx

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.

- solution -

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. xxx


1 commentaires

Vérifiez ma réponse à cette question Stackoverflow.com/a/56049765/2315974 . Est le même problème que vous avez.


5 Réponses :


-2
votes

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;
}


0 commentaires

0
votes

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;
    });


0 commentaires

7
votes

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(),
);


1 commentaires

Cette réponse doit être vérifiée. Merci@denn



0
votes

ici fonctionne bien, xxx


0 commentaires

2
votes

Le widget dropdownbutton a l'assertion suivante xxx

dans cette affirmation, la partie suivante échoue et renvoie la liste vide xxx

Dans mon cas, j'utilisais un objet d'une classe contenant plusieurs autres propriétés Je remplace l'opérateur == pour cette classe et cela a fonctionné! Voici un exemple d'opérateur remplacer par xxx


0 commentaires