How to get selectedIndex of dropdown in flutter,
In dropdownbutton there is no property to get selected index, if there how to get the selected index and my code look like this:
new DropdownButton( hint:new Text("Select a users"),value: selectedUser, onChanged: (String newValue) { setState(() { selectedUser = newValue; }); }, items: userInfoToMap.map((ListOfUsers value) { return new DropdownMenuItem<String>( value: value.name, child:new Text(value.name,style: new TextStyle(color: Colors.black)) ); }) .toList(), ), ),),
Steps to create dropdown: Step 1: Add a variable called dropdownValue that holds the currently selected item. Step 2: Add the DropdownButton widget to your page. Step 3: Inside the DropdownButton, add the value parameter and assign the dropdownValue that we created in step 1.
To change the dropdown Button color in Flutter, simply wrap your DropdownButton widget inside the Container and provide the styling instructions inside the decoration property using the BoxDecoration widget. Using the color property (insideBoxDecoration) you can assign the color.
If we want to set an initial value to the dropdown, simply set the value to the value property. Its value must be included in the items list, otherwise, an error occurs.
You should probably use a custom model object (e.g. User
) as the type for DropdownButton
.
import 'package:flutter/material.dart'; void main() { runApp(new MyApp()); } class User { const User(this.name); final String name; } class MyApp extends StatefulWidget { State createState() => new MyAppState(); } class MyAppState extends State<MyApp> { User selectedUser; List<User> users = <User>[User('Foo'), User('Bar')]; @override Widget build(BuildContext context) { return new MaterialApp( home: new Scaffold( body: new Center( child: new DropdownButton<User>( hint: new Text("Select a user"), value: selectedUser, onChanged: (User newValue) { setState(() { selectedUser = newValue; }); }, items: users.map((User user) { return new DropdownMenuItem<User>( value: user, child: new Text( user.name, style: new TextStyle(color: Colors.black), ), ); }).toList(), ), ), ), ); } }
Similar to Collin Jackson's answer, you can simply use a List of Strings and check the indexOf to set the value, which might be preferable in some situations rather than making a User class. If you want to set an initial value set _user to an integer value when defined.
int _user; ... var users = <String>[ 'Bob', 'Allie', 'Jason', ]; return new DropdownButton<String>( hint: new Text('Pickup on every'), value: _user == null ? null : users[_user], items: users.map((String value) { return new DropdownMenuItem<String>( value: value, child: new Text(value), ); }).toList(), onChanged: (value) { setState(() { _user = users.indexOf(value); }); }, );
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With