material static method
Default Material Design theme
Implementation
static EnhancedLocationTheme material([BuildContext? context]) {
final theme = context != null ? Theme.of(context) : ThemeData();
return EnhancedLocationTheme(
// Input styling
inputTextStyle: theme.textTheme.bodyLarge,
inputHintStyle: theme.textTheme.bodyLarge?.copyWith(color: Colors.grey[600]),
inputPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
inputBorderRadius: BorderRadius.circular(4),
inputBorderWidth: 1,
inputBorderColor: Colors.grey[400],
inputFocusedBorderColor: theme.primaryColor,
inputErrorBorderColor: theme.colorScheme.error,
inputFillColor: theme.cardColor,
inputFilled: false,
// Dropdown styling
dropdownBackgroundColor: theme.cardColor,
dropdownHoverColor: theme.primaryColor.withValues(alpha: 0.08),
dropdownSelectedColor: theme.primaryColor.withValues(alpha: 0.12),
dropdownBorderRadius: BorderRadius.circular(4),
dropdownElevation: 8,
dropdownPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
dropdownMaxHeight: 300,
// Text styling
primaryTextStyle: theme.textTheme.bodyLarge,
secondaryTextStyle: theme.textTheme.bodyMedium?.copyWith(color: Colors.grey[600]),
hintTextStyle: theme.textTheme.bodyMedium?.copyWith(color: Colors.grey[600]),
errorTextStyle: theme.textTheme.bodySmall?.copyWith(color: theme.colorScheme.error),
labelTextStyle: theme.textTheme.bodyMedium?.copyWith(fontWeight: FontWeight.w600),
// Icon styling
iconColor: Colors.grey[600],
primaryIconColor: theme.primaryColor,
iconSize: 20,
smallIconSize: 16,
largeIconSize: 24,
// Colors
primaryColor: theme.primaryColor,
secondaryColor: theme.colorScheme.secondary,
backgroundColor: theme.scaffoldBackgroundColor,
surfaceColor: theme.cardColor,
errorColor: theme.colorScheme.error,
dividerColor: Colors.grey[300],
// Spacing
defaultPadding: const EdgeInsets.all(16),
compactPadding: const EdgeInsets.all(8),
expansivePadding: const EdgeInsets.all(24),
defaultSpacing: 16,
compactSpacing: 8,
expansiveSpacing: 24,
defaultBorderRadius: BorderRadius.circular(4),
// Animation
animationDuration: const Duration(milliseconds: 200),
fastAnimationDuration: const Duration(milliseconds: 100),
slowAnimationDuration: const Duration(milliseconds: 300),
animationCurve: Curves.easeInOut,
// Interaction
debounceDelay: const Duration(milliseconds: 300),
fastDebounceDelay: const Duration(milliseconds: 150),
slowDebounceDelay: const Duration(milliseconds: 500),
);
}