createSecureConfig static method
ToastrConfig
createSecureConfig({
- required ToastrType type,
- required String message,
- String? title,
- Duration? duration,
- ToastrConfig? baseConfig,
Creates a secure configuration from user input
Implementation
static ToastrConfig createSecureConfig({
required ToastrType type,
required String message,
String? title,
Duration? duration,
ToastrConfig? baseConfig,
}) {
// Sanitize inputs
final secureMessage = sanitizeMessage(message);
final secureTitle = sanitizeTitle(title);
// Validate message is not empty after sanitization
if (secureMessage.isEmpty) {
throw ArgumentError('Message cannot be empty after sanitization');
}
// Ensure duration is within safe limits
Duration safeDuration = duration ?? const Duration(seconds: 5);
if (safeDuration < ToastrSecurityConfig.minDuration) {
safeDuration = ToastrSecurityConfig.minDuration;
} else if (safeDuration > ToastrSecurityConfig.maxDuration) {
safeDuration = ToastrSecurityConfig.maxDuration;
}
// Use base config or create safe defaults
final config =
baseConfig?.copyWith(
type: type,
message: secureMessage,
title: secureTitle,
duration: safeDuration,
) ??
ToastrConfig(
type: type,
message: secureMessage,
title: secureTitle,
duration: safeDuration,
);
// Final validation
if (!isValidConfig(config)) {
throw ArgumentError('Configuration failed security validation');
}
return config;
}