content: import 'package:equatable/equatable.dart';
  import 'package:flutter/material.dart';
  
  @immutable
  class LoginState {
    final bool isEmailValid;
    final bool isPasswordValid;
    final bool isSubmitting;
    final bool isSuccess;
    final bool isFailure;
  
    bool get isFormValid => isEmailValid && isPasswordValid;
  
    LoginState({
      required this.isEmailValid,
      required this.isPasswordValid,
      required this.isSubmitting,
      required this.isSuccess,
      required this.isFailure,
    });
  
    factory LoginState.empty() {
      return LoginState(
        isEmailValid: true,
        isPasswordValid: true,
        isSubmitting: false,
        isSuccess: false,
        isFailure: false,
      );
    }
  
    factory LoginState.loading() {
      return LoginState(
        isEmailValid: true,
        isPasswordValid: true,
        isSubmitting: true,
        isSuccess: false,
        isFailure: false,
      );
    }
  
    factory LoginState.failure() {
      return LoginState(
        isEmailValid: true,
        isPasswordValid: true,
        isSuccess: false,
        isSubmitting: false,
        isFailure: true,
      );
    }
  
    factory LoginState.success() {
      return LoginState(
        isEmailValid: true,
        isPasswordValid: true,
        isSubmitting: false,
        isSuccess: true,
        isFailure: false,
      );
    }
  
    LoginState update({bool? isEmailValid, bool? isPasswordValid}) {
      return copyWith(
        isEmailValid: isEmailValid,
        isPasswordValid: isPasswordValid,
        isSubmitting: false,
        isSuccess: false,
        isFailure: false,
      );
    }
  
    LoginState copyWith({
      bool? isEmailValid,
      bool? isPasswordValid,
      bool? isSubmitting,
      bool? isSuccess,
      bool? isFailure,
    }) {
      return LoginState(
        isEmailValid: isEmailValid ?? this.isEmailValid,
        isPasswordValid: isPasswordValid ?? this.isPasswordValid,
        isSubmitting: isSubmitting ?? this.isSubmitting,
        isSuccess: isSuccess ?? this.isSuccess,
        isFailure: isFailure ?? this.isFailure,
      );
    }
  
    @override
    String toString() {
      return 'LoginState{isEmailValid: $isEmailValid, isPasswordValid: $isPasswordValid, isSubmitting: $isSubmitting, isSuccess: $isSuccess, isFailure: $isFailure}';
    }
  }
  