Features

Provides the optimized extensions to work with nullable types:

extension NullableX<T extends Object?> on T? {
  @pragma('vm:prefer-inline')
  R? mapNotNull<R>(R? Function(T) callback) {
    return this == null ? null : callback(this as T);
  }
}

extension NullableStringX on String? {
  @pragma('vm:prefer-inline')
  String? get whenNotEmpty {
    final value = this;
    return value != null && value.isNotEmpty ? value : null;
  }

  @pragma('vm:prefer-inline')
  bool get isNotEmpty => this != null && this!.isNotEmpty;

  @pragma('vm:prefer-inline')
  bool get isEmpty => this == null || this!.isEmpty;
}

extension NullableIterable on Iterable? {
  @pragma('vm:prefer-inline')
  bool get isNotEmpty => this != null && this!.isNotEmpty;

  @pragma('vm:prefer-inline')
  bool get isEmpty => this == null || this!.isEmpty;
}

Libraries

nullability