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

A robust Dart utility for safe, functional-style handling of success and failure using Mirror<T>, detailed Failure types, and value equality via Mirrorable.

example/main.dart

import 'package:fl_mirror/fl_mirror.dart';

void main() {
  // Example 1: Using Mirror with success and failure
  final success = MirrorSuccess<int>(10);
  final failure = MirrorFailure<int>(UnauthorizedFailure());

  success.fold(
    onSuccess: (value) => print('✅ Success value: $value'),
    onFailure: (error) => print('❌ Error: $error'),
  );

  failure.fold(
    onSuccess: (value) => print('✅ Success value: $value'),
    onFailure: (error) => print('❌ Error: $error'),
  );

  // Mapping success
  final doubled = success.map((value) => value * 2);
  print('Mapped success: $doubled');

  // Recovering from failure
  final recovered = failure.recover((_) => 0);
  print('Recovered from failure: $recovered');

  // Example 2: Using Mirrorable for equality
  const user1 = User(1, 'Alice');
  const user2 = User(1, 'Alice');
  const user3 = User(2, 'Bob');

  print('user1 == user2: ${user1 == user2}'); // true
  print('user1 == user3: ${user1 == user3}'); // false
  print(user1); // User(1, Alice)

  // Example 3: Handling a real Failure
  try {
    simulateApiCall();
  } catch (e, s) {
    final Failure failure = UnauthorizedFailure(
      message: e.toString(),
      stackTrace: s,
    );
    print('Caught failure: $failure');
    if (failure is UnauthorizedFailure) {
      print('Redirect to login page...');
    }
  }
}

// Example model that uses Mirrorable
class User extends Mirrorable {
  final int id;
  final String name;

  const User(this.id, this.name);

  @override
  List<Object?> get props => [id, name];
}

// Simulated API call that throws a failure
void simulateApiCall() {
  throw const UnauthorizedFailure();
}
1
likes
160
points
22
downloads

Publisher

unverified uploader

Weekly Downloads

A robust Dart utility for safe, functional-style handling of success and failure using Mirror<T>, detailed Failure types, and value equality via Mirrorable.

Repository (GitHub)
View/report issues

Topics

#result-type #error-handling #failure #value-object #dart

Documentation

Documentation
API reference

License

MIT (license)

More

Packages that depend on fl_mirror