resolvePlatformSpecificImplementation<T extends FlutterLocalNotificationsPlatform> method Null safety

T? resolvePlatformSpecificImplementation<T extends FlutterLocalNotificationsPlatform>()

Returns the underlying platform-specific implementation of given type T, which must be a concrete subclass of FlutterLocalNotificationsPlatform

Requires running on the appropriate platform that matches the specified type for a result to be returned. For example, when the specified type argument is of type AndroidFlutterLocalNotificationsPlugin, this will only return a result of that type when running on Android.

Implementation

T? resolvePlatformSpecificImplementation<
    T extends FlutterLocalNotificationsPlatform>() {
  if (T == FlutterLocalNotificationsPlatform) {
    throw ArgumentError.value(
        T,
        'The type argument must be a concrete subclass of '
        'FlutterLocalNotificationsPlatform');
  }
  if (kIsWeb) {
    return null;
  }

  if (defaultTargetPlatform == TargetPlatform.android &&
      T == AndroidFlutterLocalNotificationsPlugin &&
      FlutterLocalNotificationsPlatform.instance
          is AndroidFlutterLocalNotificationsPlugin) {
    return FlutterLocalNotificationsPlatform.instance as T?;
  } else if (defaultTargetPlatform == TargetPlatform.iOS &&
      T == IOSFlutterLocalNotificationsPlugin &&
      FlutterLocalNotificationsPlatform.instance
          is IOSFlutterLocalNotificationsPlugin) {
    return FlutterLocalNotificationsPlatform.instance as T?;
  } else if (defaultTargetPlatform == TargetPlatform.macOS &&
      T == MacOSFlutterLocalNotificationsPlugin &&
      FlutterLocalNotificationsPlatform.instance
          is MacOSFlutterLocalNotificationsPlugin) {
    return FlutterLocalNotificationsPlatform.instance as T?;
  } else if (defaultTargetPlatform == TargetPlatform.linux &&
      T == LinuxFlutterLocalNotificationsPlugin &&
      FlutterLocalNotificationsPlatform.instance
          is LinuxFlutterLocalNotificationsPlugin) {
    return FlutterLocalNotificationsPlatform.instance as T?;
  }

  return null;
}