Как получить значение выбранного выпадающего элемента в флаттере? - PullRequest
0 голосов
/ 23 апреля 2020

ребята, я новичок во флаттере, я создал форму и добавил туда выпадающее меню. Я хочу напечатать данные выбранного элемента. И приложение работает, но печатается Экземпляр "Степень" .

На самом деле я хочу отправить эти данные в базу данных через API.

Это мой код.

class Degree {
const Degree(this.name);

final String name;
}

class _RegisterStudentsState extends State<RegisterStudents> {
Degree selectedDegree;
List<String> selectedValues;
List<Degree> degrees = <Degree>[
const Degree('BSc in Software Engineering (PLY)'),
const Degree('BSc in Computer Security (PLY)'),
const Degree('BSc in Computer Networks (PLY)')
];


@override
Widget build(BuildContext context) {
SystemChrome.setSystemUIOverlayStyle(
    SystemUiOverlayStyle(statusBarColor: Colors.transparent));

return Scaffold(
  resizeToAvoidBottomPadding: false,
  body: Stack(
    children: <Widget>[
      Image.asset(
        'assets/background2.jpg',
        fit: BoxFit.fill,
        height: double.infinity,
        width: double.infinity,
      ),
      Container(
        height: double.infinity,
        width: double.infinity,
        decoration: BoxDecoration(
            gradient: LinearGradient(
                begin: Alignment.bottomCenter,
                end: Alignment.topCenter,
                colors: [
              Colors.black.withOpacity(.9),
              Colors.black.withOpacity(.1),
            ])),
      ),
      Padding(
        padding: EdgeInsets.only(bottom: 60),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.start,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[

            Container(
              decoration: BoxDecoration(
                  color: Colors.white,
                  borderRadius: BorderRadius.circular(10)),
              padding:
                  EdgeInsets.only(left: 30, top: 2, bottom: 2, right: 30),
              child: DropdownButton<Degree>(
                hint: new Text(
                  "Select a degree",
                  style: TextStyle(color: Colors.black),
                ),
                value: selectedDegree,
                onChanged: (Degree newValue) {
                  setState(() {
                    selectedDegree = newValue;
                    print(newValue);
                  });
                },
                items: degrees.map((Degree degree) {
                  return new DropdownMenuItem<Degree>(
                    value: degree,
                    child: new Text(
                      degree.name,
                      style: new TextStyle(color: Colors.black),
                    ),
                  );
                }).toList(),
              ),
            ),
          ],
        ),
      )
    ],
  ),
 );
}

Как напечатать название степени вместо печати Экземпляр 'Степень'?

1 Ответ

1 голос
/ 23 апреля 2020

try >> print (newValue.name) >> вы печатаете весь класс, вы должны напечатать свойство класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...