초기 커밋

This commit is contained in:
2026-03-01 07:55:59 +09:00
commit b0262d6bab
67 changed files with 4660 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
import 'package:flutter/material.dart';
extension BuildContextExtension on BuildContext {
ThemeData get theme => Theme.of(this);
TextTheme get textTheme => Theme.of(this).textTheme;
ColorScheme get colorScheme => Theme.of(this).colorScheme;
MediaQueryData get mediaQuery => MediaQuery.of(this);
Size get screenSize => MediaQuery.sizeOf(this);
double get screenWidth => screenSize.width;
double get screenHeight => screenSize.height;
bool get isMobile => screenWidth < 600;
bool get isTablet => screenWidth >= 600 && screenWidth < 1200;
bool get isDesktop => screenWidth >= 1200;
void showSnackBar(String message, {bool isError = false}) {
ScaffoldMessenger.of(this).showSnackBar(
SnackBar(
content: Text(message),
backgroundColor: isError ? colorScheme.error : null,
behavior: SnackBarBehavior.floating,
),
);
}
}
extension StringExtension on String {
String get capitalize =>
isEmpty ? this : '${this[0].toUpperCase()}${substring(1)}';
bool get isValidEmail => RegExp(
r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$',
).hasMatch(this);
bool get isValidPassword => length >= 8;
}
extension DateTimeExtension on DateTime {
String get toFormattedString => '$year-${month.toString().padLeft(2, '0')}-${day.toString().padLeft(2, '0')}';
String get toFormattedDateTime =>
'$toFormattedString ${hour.toString().padLeft(2, '0')}:${minute.toString().padLeft(2, '0')}';
}