/// Configuration for gRPC client connections. /// /// Provides separate configurations for development and production environments /// with appropriate security settings for each. class GrpcConfig { /// The gRPC server host address. final String host; /// The gRPC server port. final int port; /// Connection timeout duration. final Duration timeout; /// Whether to use TLS for secure connections. /// /// When false, uses insecure (plaintext) credentials suitable only for /// development environments. final bool useTls; /// Whether to allow self-signed certificates. /// /// Only applicable when [useTls] is true. Useful for development /// environments with self-signed certificates. final bool allowSelfSignedCertificate; const GrpcConfig({ required this.host, required this.port, this.timeout = const Duration(seconds: 30), this.useTls = true, this.allowSelfSignedCertificate = false, }); /// Development configuration pointing to local/development gRPC server. /// /// Uses plaintext (insecure) credentials for development convenience. static const GrpcConfig development = GrpcConfig( host: '192.168.88.228', port: 5011, timeout: Duration(seconds: 30), useTls: false, allowSelfSignedCertificate: true, ); /// Production configuration for the Plan B Logistics gRPC server. /// /// Uses TLS for secure communication. static const GrpcConfig production = GrpcConfig( host: 'grpc-route.goutezplanb.com', port: 443, timeout: Duration(seconds: 30), useTls: true, allowSelfSignedCertificate: false, ); /// Returns the full address string in the format "host:port". String get address => '$host:$port'; }