I have created below builder method to build my widget dynamically :
Widget _buildSwitchListTile(String title, String description,
var currentValue, Function updateValue) {
return SwitchListTile(
title: Text(title),
value: currentValue,
subtitle: Text(description),
onChanged: updateValue,
);
}
You can see above updateValue
Calling it as below :
_buildSwitchListTile(
'Gluten-free',
'Only include gluten-free meals.',
_glutenFree,
(newValue) {
setState(
() {
_glutenFree = newValue;
},
);
},
)
Issue is I am getting Compile time error (red mark) near updateValue in _buildSwitchListTile method.
It's Saying :
The argument type 'Function' can't be assign to the parameter type 'void Function (bool)?'.
That's Issue no.1
Below is the Runtime issue : If I add (paranthesis) as updateValue() then error is gone but am getting runtime error as below :
Closure call with mismatched arguments: function '_FiltersScreenState.build.<anonymous closure>'
Receiver: Closure: (dynamic) => Null
Tried calling: _FiltersScreenState.build.<anonymous closure>()
Found: _FiltersScreenState.build.<anonymous closure>(dynamic) => Null
Below is the pic for reference :
What will be the possible solution I should have? Thanks.
CodePudding user response:
You can change callback function like unction(bool)? updateValue
or unction(bool)? updateValue
because the onChanged
is void Function(T value);
Widget _buildSwitchListTile(String title, String description,
var currentValue, Function(bool) updateValue) {