from<R> method
Gets a related state by type
Implementation
R from<R>([Key? key]) {
assert(() {
log('🔍 Getting related state of type $R from $T${key != null ? ' with key: $key' : ''}',
level: 10);
return true;
}());
if (related == null || related!.isEmpty) {
throw StateError('''
❌ No Related States Found
━━━━━━━━━━━━━━━━━━━━━
Parent type: $T
Requested type: $R${key != null ? '\nRequested key: $key' : ''}
━━━━━━━━━━━━━━━━━━━━━
''');
}
final result = key != null
? related!.firstWhere(
(n) => n.notifier is R && n.keyNotifier == key,
orElse: () => throw StateError('''
❌ Related State Not Found
━━━━━━━━━━━━━━━━━━━━━
Looking for: $R with key: $key
Parent type: $T
Available types: ${related!.map((r) => '${r.notifier.runtimeType}(${r.keyNotifier})').join(', ')}
━━━━━━━━━━━━━━━━━━━━━
'''),
)
: related!.firstWhere(
(n) => n.notifier is R,
orElse: () => throw StateError('''
❌ Related State Not Found
━━━━━━━━━━━━━━━━━━━━━
Looking for: $R
Parent type: $T
Available types: ${related!.map((r) => '${r.notifier.runtimeType}(${r.keyNotifier})').join(', ')}
━━━━━━━━━━━━━━━━━━━━━
'''),
);
return result.notifier as R;
}