Search code examples
arraysstringflutterdropdown

How to implement Array in Dropdown in flutter


I am getting the comma separated string from the server. Then I am converting that to an array by using .split(). I have to populate that array into a dropdown list of flutter. How to do that. Here is my code.

Widget _visitorPurpose()  {
SharedPref.sharedPreferenceGet(StringsConstants.CLIENT_PURPOSE).then((dynamic res){
    purposeTemp = res;
    print(res);
    purposeTemp2 = purposeTemp.split(",");
});    return StreamBuilder(
  // stream: bloc.email,
  builder: (context, snapshot) {

    return new Container(
      padding: EdgeInsets.fromLTRB(15.0, 0.0, 15.0, 0.0),
      child: new Column(
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: <Widget>[
          new DropdownButton<String>(
            // value: selectedPurpose,
            hint: new Text(
              'Select visitng purpose',
              style: TextStyle(fontFamily: "Gotham"),
            ),
            items: <String>[purposeTemp]
                .map((purposeTemp) {
              return new DropdownMenuItem<String>(
                value: purposeTemp,
                child: new Text(
                  purposeTemp,
                  style: TextStyle(fontFamily: "Gotham"),

                ),

              );
            }).toList(),
            onChanged: (String purpose) {
              setState(() {
                selectedPurpose = purpose;
              });
            },
            // value: selectedPurpose,
          )
        ],
      ),
    );
  },
);

}

This is how I convert the array after response. (result) is the response I am getting.

result.config.values.elementAt(19).value

This is how my variables are defined.

 String purposeTemp  = "";
 var purposeTemp2 = [];

Solution

  • Got the answer. For other references here is my answer.

    Widget _visitorPurpose()  {
    SharedPref.sharedPreferenceGet(StringsConstants.CLIENT_PURPOSE).then((dynamic res){
        purposeTemp = res;
        print(res);
        purposeTemp2 = purposeTemp.split(",");
    });    return StreamBuilder(
      // stream: bloc.email,
      builder: (context, snapshot) {
    
        return Expanded( 
        child:new Container(
          padding: EdgeInsets.fromLTRB(15.0, 0.0, 15.0, 0.0),
          child: new Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: <Widget>[
              new DropdownButton<String>(
                // value: selectedPurpose,
                hint: new Text(
                  'Select visitng purpose',
                  style: TextStyle(fontFamily: "Gotham"),
                ),
                items: purposeTemp2
                    .map((purposeTemp) {
                  return new DropdownMenuItem<String>(
                    value: purposeTemp,
                    child: new Text(
                      purposeTemp,
                      style: TextStyle(fontFamily: "Gotham"),
    
                    ),
    
                  );
                }).toList(),
                onChanged: (String purpose) {
                  setState(() {
                    selectedPurpose = purpose;
                  });
                },
                // value: selectedPurpose,
              )
            ],
          ),
        ),
    );