Jak odczytać wybrany index z DropdownButtonFormField we Flutterze?

0

Chciałbym przekazać index wybranego menu z DropdownButtonFormField tak, żeby móc go użyć przy wyborze indexu posta (zamiast 0) albo w jakiś sposób dobrać się do posts.nazwa...
Czy może mi ktoś powiedzieć jak to zrobić?

          DropdownButtonFormField(
            hint: const Text("Wybierz jadłospis", style: TextStyle(color: Colors.black, fontSize: 16.0, fontStyle: FontStyle.italic)),
            items: posts.map((item) {
              return DropdownMenuItem(
                value: item.id.toString(),
                child: Text(item.nazwa.toString().substring(0, showLenght(item.nazwa.toString().length)), style: const TextStyle(color: Colors.black, fontSize: 16.0, fontStyle: FontStyle.italic)),
              );
            }).toList(),
            onChanged: (newValue) {
              setState(() {
                print(newValue);
                _listName = posts[0].nazwa.toString();
                _description = posts[0].opis.toString();
                _email = posts[0].dietetyk.toString();
              });
            },
0

Ale po co? Wrzuć do dropdown cały post, a wtedy newValue będzie zawierać cały i nie będzie trzeba pobierać go po indeksie. Albo szukaj go w kolekcji po id a nie po indeksie

0
gajusz800 napisał(a):

Ale po co? Wrzuć do dropdown cały post, a wtedy newValue będzie zawierać cały i nie będzie trzeba pobierać go po indeksie. Albo szukaj go w kolekcji po id a nie po indeksie

a... zrobiłem tak po id i działa... dzięki :)

DropdownButtonFormField(
            hint: const Text("Wybierz jadłospis", style: TextStyle(color: Colors.black, fontSize: 16.0)),
            items: posts.map((item) {
              return DropdownMenuItem(
                value: item.id,
                child: Text(item.nazwa!.substring(0, showLenght(item.nazwa!.length)), style: const TextStyle(color: Colors.black, fontSize: 16.0)),
              );
            }).toList(),
            onChanged: (newValue) {
              setState(() {
                var post=posts.firstWhere((element) => element.id==newValue);
                _dietName = post.nazwa!;
                _dietComment = post.komentarz!;
                _dietDescription = post.opis!;
                _dietEmail = post.dietetyk!;
                _dietId = post.id!;
                _dietDays = post.dni!;
              });
            },

1 użytkowników online, w tym zalogowanych: 0, gości: 1