I try to create some custom widget with some parameter in the constructor. This widget has some optional and required parameter. how can make Function
type paramete
You can use a default value that does nothing:
class TextInputWithIcon extends StatefulWidget {
final String iconPath;
final String placeHolder;
final Function(bool) onFocusChange;
const TextInputWithIcon(
{Key key,
@required this.iconPath,
this.placeHolder = "",
this.onFocusChange = _dummyOnFocusChange})
: assert(onFocusChange != null), super(key: key);
@override
_TextInputWithIconState createState() => _TextInputWithIconState();
static dynamic _dummyOnFocusChange(bool val) {}
}
I created a static named function instead of just a closure as default value, because closures are not const and currently default values need to be const.
I added the assert(...)
to ensure that an error is shown when null
is passed explicitly.
Another option if you don't like named parameters (like me :/) is:
function_name (argument1, [argument2]) {
// statements
}
arguments in brackets are optional.
source
Optional parameters can be either positional or named, but not both.
Named parameters are optional by default so you don't have to assign the default value.
const TextInputWithIcon(
{Key key,
@required this.iconPath,
this.placeHolder = "",
this.onFocusChange
})
: super(key: key);
and when calling the onFocusChange
perform a null check:
if(this.onFocusChange != null) {
this.onFocusChange(boolValue)
}
Have a look at Optional Parameters to understand better.
Edit: Thank you Jonah Williams to clarification.