trigger<T extends Trigger> method

T? trigger<T extends Trigger>()

ค้นหา Trigger จาก Scope ที่ใกล้ที่สุด หรือถ้าไม่เจอให้หาจาก Global Registry

Implementation

T? trigger<T extends Trigger>() {
  // 1. ค้นหาใน InheritedWidget (TriggerScope) ก่อนเสมอ
  // การใช้ dependOnInheritedWidgetOfExactType จะทำให้ Widget นี้
  // Rebuild อัตโนมัติถ้าตัวแปรใน TriggerScope เปลี่ยน (ถ้าคุณทำ Logic นั้นไว้)
  // หรือถ้าแค่ต้องการค่าเฉยๆ สามารถใช้ getInheritedWidgetOfExactType แทนได้
  final scope = dependOnInheritedWidgetOfExactType<_InheritedTriggerScope>();

  if (scope != null) {
    final instance = scope.tgMap[T];
    if (instance != null) return instance as T;
  }

  // 2. ถ้าใน Scope ไม่มี ให้ถอยไปหาที่ Global Singleton Registry
  try {
    return Trigger.of<T>();
  } catch (_) {
    // กรณีหาไม่เจอเลยจริงๆ
    return null;
  }
}