none_or 1.0.0 copy "none_or: ^1.0.0" to clipboard
none_or: ^1.0.0 copied to clipboard

Provides a new object None<T>() and a typedef for NoneOr<T>() to differentiate between implicit and explicit null values using dart's only valid Union Type.

example/none_or_example.dart

import 'package:none_or/none_or.dart';

void main() {
  _NoneOrExampleClass e0 = _NoneOrExampleClass(
    nonNullableField: true,
    nullableField: true,
  );
  print('start: $e0');
  print('Passing values to copyWith(nonNullableField: null)');
  print('result: ${e0.copyWith(nonNullableField: null)}');
  print('Passing values to copyWith(nonNullableField: false)');
  print('result: ${e0.copyWith(nonNullableField: false)}');
  print('Passing values to copyWith(nonNullableField: false)');
  print('result: ${e0.copyWith(nonNullableField: false)}');
  print('Passing values to copyWith(nullableField: false)');
  print('result: ${e0.copyWith(nullableField: false)}');
  print('Passing values to copyWith(nullableField: null)');
  print('result: ${e0.copyWith(nullableField: null)}');
}

/// A simple example immutable class with a copyWith function that uses
/// NoneOr<T> to ignore implicit no-change values given to a copyWith, while
/// respecting explicitly provided values including `null`
class _NoneOrExampleClass {
  final bool nonNullableField;
  final bool? nullableField;

  const _NoneOrExampleClass({
    required this.nonNullableField,
    this.nullableField,
  });

  @override
  String toString() =>
      'Example(non-nullable value: $nonNullableField, nullable value: $nullableField)';

  _NoneOrExampleClass copyWith({
    bool? nonNullableField,
    NoneOr<bool>? nullableField = const None(),
  }) =>
      _NoneOrExampleClass(
        nonNullableField: nonNullableField ?? this.nonNullableField,
        nullableField: None.fallback(nullableField, this.nullableField),
      );
}
2
likes
150
points
18
downloads

Documentation

API reference

Publisher

verified publishertre.contact

Weekly Downloads

Provides a new object None<T>() and a typedef for NoneOr<T>() to differentiate between implicit and explicit null values using dart's only valid Union Type.

Repository

License

BSD-3-Clause (license)

More

Packages that depend on none_or