Кнопка выпадающего списка — ошибка после обновления flutter

#flutter #dropdownbutton

Вопрос:

Я просто узнаю, что эта часть кода больше не работает после обновления flutter. Я не понимаю, в чем проблема. Раньше это хорошо работало. Если вы можете помочь мне исправить это, ваша помощь будет оценена по достоинству. Большое спасибо.

полное сообщение об ошибке

«Не удалось определить параметр типа «T».

Попытался вывести «динамический» для «T», который не работает: параметр «OnChanged» объявлен как » Функция void(T?)?», но аргумент «Функция void(объект?)». Тип «динамический» был выведен из: Параметр «элементы» объявлен как » Список<Выпадающий список>?», но аргумент » Список<Выпадающий список><Выпадающий список>». Параметр «значение» объявлен как » T?», но аргумент «динамический».

Рассмотрите возможность передачи явных аргументов типа(ов) в универсальный.

»

  Padding(
                padding: const EdgeInsets.all(8.0),
                child: StreamBuilder<QuerySnapshot>(
                    stream: FirebaseFirestore.instance
                        .collection('Users')
                        .doc(FirebaseAuth.instance.currentUser!.uid)
                        .collection('area_of_Focus')
                        .snapshots(),
                    builder: (context, snapshot) {
                      if (!snapshot.hasData)
                        const Text("Loading.....");
                      else {
                        List<DropdownMenuItem> projectItems = [];
                        for (int i = 0; i < snapshot.data!.docs.length; i  ) {
                          DocumentSnapshot snap = snapshot.data!.docs[i];
                          projectItems.add(
                            DropdownMenuItem(
                              child: Text(
                                (snap['area_of_Focus_Name']),
                                style: TextStyle(color: Colors.black),
                              ),
                              value: (snap['area_of_Focus_Name']),
                            ),
                          );}
                        return Row(
                          mainAxisAlignment: MainAxisAlignment.start,
                          children: <Widget>[
                            DropdownButton( //this is where I am having this error
                              items: projectItems,
                              onChanged:
                                  (myFocus) {
                                setState(() {
                                  selectedFocus = myFocus;
                                  _valueAreaOfFocusSaved = myFocus; 
                                 // taskNewValue ['area_of_Focus_Name'] = myFocus ;
                                });
                              },
                              value: selectedFocus,
                              isExpanded: false,
                              hint:  SizedBox(
                                width: 315.0,
                                height: 40.0,
                                child: Text(
                                  projectName,
                                  style: TextStyle(color: Colors.black),
                                ),
                              ),
                            ),
                          ],
                        );
                      }
                      return Container(
                        height: 0,width: 0,
                      );
                    }
                ),
              ),

 

Ответ №1:

Я нашел решение, которое удалит сообщение об ошибке

 Padding(
                padding: const EdgeInsets.all(8.0),
                child: StreamBuilder<QuerySnapshot>(
                    stream: FirebaseFirestore.instance
                        .collection('Users')
                        .doc(FirebaseAuth.instance.currentUser!.uid)
                        .collection('area_of_Focus')
                        .snapshots(),
                    builder: (context, snapshot) {
                      if (!snapshot.hasData)
                        const Text("Loading.....");
                      else {
                        List<DropdownMenuItem> projectItems = [];
                        for (int i = 0; i < snapshot.data!.docs.length; i  ) {
                          DocumentSnapshot snap = snapshot.data!.docs[i];
                          projectItems.add(
                            DropdownMenuItem(
                              child: Text(
                                (snap['area_of_Focus_Name']),
                                style: TextStyle(color: Colors.black),
                              ),
                              value: (snap['area_of_Focus_Name']),
                            ),
                          );}
                        return Row(
                          mainAxisAlignment: MainAxisAlignment.start,
                          children: <Widget>[
                            DropdownButton<dynamic> ( 
                              items: projectItems,
                              onChanged:
                                  (myFocus) {
                                setState(() {
                                  selectedFocus = myFocus;
                                  _valueAreaOfFocusSaved = myFocus; 
                                 // taskNewValue ['area_of_Focus_Name'] = myFocus ;
                                });
                              },
                              value: selectedFocus,
                              isExpanded: false,
                              hint:  SizedBox(
                                width: 315.0,
                                height: 40.0,
                                child: Text(
                                  projectName,
                                  style: TextStyle(color: Colors.black),
                                ),
                              ),
                            ),
                          ],
                        );
                      }
                      return Container(
                        height: 0,width: 0,
                      );
                    }
                ),
              ),