enum CallState { idle, ringing, connecting, connected, disconnected } class CallInfo { final CallState state; final String? callSid; final String? callerNumber; final Duration duration; final bool isMuted; final bool isSpeakerOn; final bool isOnHold; const CallInfo({ this.state = CallState.idle, this.callSid, this.callerNumber, this.duration = Duration.zero, this.isMuted = false, this.isSpeakerOn = false, this.isOnHold = false, }); CallInfo copyWith({ CallState? state, String? callSid, String? callerNumber, Duration? duration, bool? isMuted, bool? isSpeakerOn, bool? isOnHold, }) { return CallInfo( state: state ?? this.state, callSid: callSid ?? this.callSid, callerNumber: callerNumber ?? this.callerNumber, duration: duration ?? this.duration, isMuted: isMuted ?? this.isMuted, isSpeakerOn: isSpeakerOn ?? this.isSpeakerOn, isOnHold: isOnHold ?? this.isOnHold, ); } bool get isActive => state == CallState.ringing || state == CallState.connecting || state == CallState.connected; }