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