Должен быть ровно один элемент со значением [DropDownButton]:

#flutter

#flutter

Вопрос:

 String selectedItem = 'Instalação Fibra';

DropdownButton<String>(
                value: selectedItem,
                onChanged: (value) {
                  setState(() {
                    selectedItem = value;
                  });
                },
                items: <String>['Instalação de TV', 'Instalação Rádio']
                    .map<DropdownMenuItem<String>>((String e) {
                  return DropdownMenuItem<String>(
                    value: e,
                    child: Text(e),
                  );
                }).toList(),
              )
  

Как это может быть неправильно?
Это не компиляция. Я пробовал несколько способов, но все они приводят к одной и той же ошибке.

Ответ №1:

Вы можете скопировать вставить запустить полный код ниже
selectedItem 'Instalação Fibra' не существует в <String>['Instalação de TV', 'Instalação Rádio']
Вы можете использовать List<String> items и устанавливать selectedItem = items[0]
фрагмент кода

 List<String> items = ['Instalação Fibra','Instalação de TV', 'Instalação Rádio'];
String selectedItem;

@override
void initState() {
    selectedItem = items[0];
    super.initState();
}
  

рабочая демонстрация

введите описание изображения здесь

полный код

 import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  List<String> items = ['Instalação Fibra','Instalação de TV', 'Instalação Rádio'];
  String selectedItem;

  @override
  void initState() {
    selectedItem = items[0];
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: DropdownButton<String>(
        value: selectedItem,
        onChanged: (value) {
          setState(() {
            selectedItem = value;
          });
        },
        items: items.map<DropdownMenuItem<String>>((String e) {
          return DropdownMenuItem<String>(
            value: e,
            child: Text(e),
          );
        }).toList(),
      ),
    );
  }
}