web-dev-qa-db-fra.com

Bouton déroulant dans le scintillement ne commutant pas les valeurs à la valeur sélectionnée

J'ai récemment commencé à programmer en utilisant Dart et flutter et tout s'est bien passé pour mon application, bien que récemment, je voulais ajouter un menu déroulant pour fournir à l'utilisateur plusieurs options parmi lesquelles choisir. tout a fonctionné comme prévu mais quand je choisis une valeur dans la liste, cela ne change pas la valeur dans la boîte, cela revient à l'indice ou à une boîte vide. Toute aide serait appréciée!

voici mon code pour le dropdownbutton:

Widget buildDropdownButton() {
String newValue;

return new Padding(
  padding: const EdgeInsets.all(24.0),
  child: new Column(
    mainAxisAlignment: MainAxisAlignment.start,
    children: <Widget>[
      new ListTile(
        title: const Text('Frosting'),
        trailing: new DropdownButton<String>(
            hint: Text('Choose'),
            onChanged: (String changedValue) {
              newValue=changedValue;
              setState(() {
                newValue;
                print(newValue);
              });
            },
            value: newValue,
            items: <String>['None', 'Chocolate', 'Vanilla', 'ButterCream']
                .map((String value) {
              return new DropdownMenuItem<String>(
                value: value,
                child: new Text(value),
              );
            }).toList()),
      ),
    ],
  ),
);
}
8
Darwish Al-Neyadi

L'erreur est due au fait que vous déclarez une variable de méthode newValue vous devez déclarer cette variable comme globale dans votre StatefulWidget.

   String newValue;

  Widget buildDropdownButton() {
  return new Padding(
    padding: const EdgeInsets.all(24.0),
    child: new Column(
      mainAxisAlignment: MainAxisAlignment.start,
      children: <Widget>[
        new ListTile(
          title: const Text('Frosting'),
          trailing: new DropdownButton<String>(
              hint: Text('Choose'),
              onChanged: (String changedValue) {
                newValue=changedValue;
                setState(() {
                  newValue;
                  print(newValue);
                });
              },
              value: newValue,
              items: <String>['None', 'Chocolate', 'Vanilla', 'ButterCream']
                  .map((String value) {
                return new DropdownMenuItem<String>(
                  value: value,
                  child: new Text(value),
                );
              }).toList()),
        ),
      ],
    ),
  );
  }
12
diegoveloper