Как я могу добавить новый элемент в список DropDownMenuItems во время выполнения? - PullRequest
0 голосов
/ 19 июня 2020

Я хочу добавить новый элемент в раскрывающийся список во время выполнения.

Center(
  child: DropdownButtonHideUnderline(
   child: DropdownButton(
     isExpanded: true,
     value: selectedClass,
     items: _dropDownMenuItemsClass,
     onChanged: changedDropDownItem,
     ),
 ))

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Далее пример, если я правильно понял ваш вопрос:

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String dropdownValue = 'One';
  var values = <String>['One', 'Two', 'Free', 'Four'];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('Title'),
        ),
        body: Row(
          children: [
            DropdownButtonHideUnderline(
              child: DropdownButton<String>(
                value: dropdownValue,
                onChanged: (String newValue) {
                  setState(() {
                    dropdownValue = newValue;
                  });
                },
                items: values.map<DropdownMenuItem<String>>((String value) {
                  return DropdownMenuItem<String>(
                    value: value,
                    child: Text(value),
                  );
                }).toList(),
              ),
            ),
            //Button to add/change value at runtime
            RaisedButton(
              child: Text('Change'),
              onPressed: () {
                setState(() {
                  values = values..add('Value');
                });
              },
            )
          ],
        ));
  }
}
0 голосов
/ 19 июня 2020

var _currencies = ['Rupees', 'Dollars', 'Pounds'];

child: DropdownButton<String>(
                    items: _currencies.map((String value) {
                      return DropdownMenuItem<String>(
                        value: value,
                        child: Text(value),
                      );
                    }).toList(),
                    value: 'Rupees',
                    onChanged: (String newValueSelected) {
                      // Your code to execute, when a menu item is selected from dropdown
                    },
                  ),

Создайте переменную, к которой вы хотите добавить строку. Здесь я добавил var _currencies. надеюсь, это сработает для вас.

...