This should be an easy answer but I do not find the solution yet on the internet.
Let say I have 1 VoidCallback field name onStart in a constructor, and I want this field to have a default value when there is no parameter pass it to the constructor. I already try some code but the IDE gives me a warning. How to provide this default value?
class DefaultCallbackExample {
final VoidCallback onStart;
final VoidCallback onFinish;
final bool isEnable;
DefaultCallbackExample({
this.onStart = (() => {}), // IDE Warning
required this.onFinish,
this.isEnable = true,
});
}
class DefaultCallbackExample {
final VoidCallback onStart;
final VoidCallback onFinish;
final bool isEnable;
DefaultCallbackExample({
this.onStart = const (() => {}), // IDE Warning
required this.onFinish,
this.isEnable = true,
});
}
There is a solution from jamesdin, but I hope there is a simpler solution not to have to write constant sentinel value. Maybe in the future dart version, there is a possible solution
Either the callback should be nullable or it must be initialized with a default value. Default arguments must be constants, so as usual, if you can't provide a constant directly, use a constant sentinel value:
class DefaultCallbackExample {
final VoidCallback onStart;
final VoidCallback onFinish;
final bool isEnable;
DefaultCallbackExample({
VoidCallback? onStart,
required this.onFinish,
this.isEnable = true,
}) : onStart = onStart ?? (() {});
}
Also note that () => {} creates an anonymous function that returns an empty Set. An anonymous function with an empty body should be just () {}. Function bodies either should use => (if possible) or curly braces, but not both.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With