The argument type 'void Function(Hospital)' can't be assigned to the parameter type 'void Function(Object?)?'. Flutter Dropdown

Issue

when I use Hospital as a parameter of onChangeEvent in Dropdown Flutter gives this erroe :

The argument type ‘void Function(Hospital)’ can’t be assigned to the
parameter type ‘void Function(Object?)?’.

Hospital

class Hospital {
  final int Id;
  final String Name;
  final int BranchId;
  const Hospital(
      {required this.Id, required this.Name, required this.BranchId});

  factory Hospital.fromJson(Map<String, dynamic> json) {
    return Hospital(
        Id: json['id'], Name: json['name'], BranchId: json['branchId']);
  }
}

Dropdown Code

                                DropdownButton(
                                      style: const TextStyle(
                                          color: Colors.deepPurple),
                                      underline: Container(
                                        height: 2,
                                        color: Colors.deepPurpleAccent,
                                      ),
                                      onChanged: (Hospital newValue) {
                                        setState(() {
                                          hospitalDropdownValue = newValue.id;
                                         branchDropdownValue = newValue.BranchId;
                                        });
                                      },
                                      items: _hospitals.map<DropdownMenuItem<Hospital>>((Hospital item) {
                                        return DropdownMenuItem<Hospital>(
                                          child: Text(item.Name),
                                          value: item,
                                        );
                                      }).toList(),
                                      value: hospitalDropdownValue,
                                      hint: const Text("Hospital Name"),
                                    ),

Solution

You can try to assign DropdownButton type as Hospital as well as

                           DropdownButton<Hospital>(
                                      style: const TextStyle(
                                          color: Colors.deepPurple),
                                      underline: Container(
                                        height: 2,
                                        color: Colors.deepPurpleAccent,
                                      ),
                                      onChanged: (Hospital? newValue){//add null safe 
                                        setState(() {
                                          hospitalDropdownValue = newValue.id;
                                         branchDropdownValue = newValue.BranchId;
                                        });
                                      },

Answered By – Jahidul Islam

Answer Checked By – Timothy Miller (FlutterFixes Admin)

Leave a Reply

Your email address will not be published. Required fields are marked *