createStateSelectListener function
create the listener for provider.select filter (StateProvider)
Implementation
void createStateSelectListener(Target target) {
dynamic prevValue = target.callback(target.notifier.state);
target.selectValue = prevValue;
// ignore: prefer_function_declarations_over_variables
final listener = (newState) {
final value = target.callback(target.notifier.state);
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!();
}
prevValue = value;
};
target.listener = listener;
}