createSimpleSelectListener function
create the listener for provider.select filter (SimpleProvider)
Implementation
void createSimpleSelectListener(Target target) {
final notifier = target.notifier;
// get an initial value using the callback
dynamic prevValue = target.callback(notifier);
target.selectValue = prevValue;
// listener with the logic to rebuild the Consumer
// ignore: prefer_function_declarations_over_variables
final listener = (_) {
final value = target.callback(notifier);
if (target.listenWhenTheCallbackReturnsTrue) {
assert(
value is bool,
'The value returned by the callback must be a boolean because '
'listenWhenTheCallbackReturnsTrue is true',
);
}
target.selectValue = value;
bool allowRebuild = false;
if (value is bool && target.listenWhenTheCallbackReturnsTrue) {
allowRebuild = value;
} else if (prevValue != value) {
allowRebuild = true;
}
// check if the value has changed
if (allowRebuild && target.rebuild != null) {
target.rebuild!(); // rebuild the Consumer
}
prevValue = value;
};
// save the listener to be added to our Notifier later
target.listener = listener;
}