2017-09-20 2 views
0

Comment obtenir selectedIndex du menu déroulant en flottement,comment obtenir sélectionné index de DropDownButton dans flutter

En DropDownButton il n'y a pas la propriété d'être sélectionné index, s'il comment obtenir l'index sélectionné et mon regard de code comme celui-ci :

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(), 
      ), 

     ),), 
+0

ne doit pas être sélectionnéUne variable globale. Lorsque vous choisissez un élément, onChange est appelé? – user1462442

+0

pouvez-vous me donner un exemple pour cela Merci pour la réponse –

+0

qu'en est-il 'userInfoToMap.indexOf (newValue)'? –

Répondre

2

Vous devriez probablement utiliser un objet modèle personnalisé (par exemple User) comme le type de DropdownButton.

video

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>[const User('Foo'), const 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(), 
     ), 
     ), 
    ), 
    ); 
    } 
}