fl_bustter 1.0.1 copy "fl_bustter: ^1.0.1" to clipboard
fl_bustter: ^1.0.1 copied to clipboard

A flexible CQRS-style message bus and validation package for Dart & Flutter.

example/main.dart

import 'package:fl_bustter/fl_bustter.dart';

/// Login Request
class LoginRequest extends IRequest<LoginResponse> {
  final String email;
  final String password;

  LoginRequest({required this.email, required this.password});
}

/// Login Response
class LoginResponse {
  final String token;
  LoginResponse(this.token);
}

/// Login Validator
class LoginValidator extends IValidator<LoginRequest> {
  @override
  void buildRules() {
    ruleFor((x) => x.email, 'email')
        .notEmpty()
        .emailAddress()
        .withMessage('Please enter a valid email');

    ruleFor((x) => x.password, 'password')
        .notEmpty()
        .minLength(6)
        .withMessage('Password must be at least 6 characters');
  }
}

/// Login Handler
class LoginHandler extends IHandler<LoginRequest, LoginResponse> {
  LoginHandler() : super(LoginValidator());

  @override
  Future<LoginResponse> handle(LoginRequest request) async {
    await Future.delayed(Duration(seconds: 5));

    // Simulate login logic
    if (request.email == 'test@example.com' &&
        request.password == 'password123') {
      return LoginResponse("token_string_example");
    } else {
      throw Exception('Invalid email or password');
    }
  }
}

void main() async {
  final busster = Busster();

  // Register the handler
  busster.registerHandler<LoginRequest, LoginResponse>(LoginHandler());

  try {
    final request =
        LoginRequest(email: 'test@example.com', password: 'password123');

    final result = await busster.send<LoginResponse>(request);
    print(result.token); // Login successful: token_string_example
  } on ValidationException catch (e) {
    print('Validation failed:');
    print(e.toString());
  } catch (e) {
    print('Error: $e');
  }
}
1
likes
160
points
15
downloads

Publisher

unverified uploader

Weekly Downloads

A flexible CQRS-style message bus and validation package for Dart & Flutter.

Repository (GitHub)
View/report issues

Topics

#cqrs #validation #bus #flutter #dart

Documentation

Documentation
API reference

License

MIT (license)

More

Packages that depend on fl_bustter