A comprehensive Flutter practice project showcasing modern responsive UI patterns, multi-language support, and state management using Riverpod.
- Adaptive Layouts: Automatically adjusts for phones, tablets, and desktops
- Orientation Support: Seamless portrait/landscape transitions
- Device Detection: Smart device type detection with custom breakpoints
- Responsive Widgets: Custom grid layouts with auto-column calculation
- Screen Scaling: flutter_screenutil for consistent UI across devices
- 3 Languages: English (default), Korean, Japanese
- Hot Switching: Instant language change without app restart
- Type-Safe: Code generation for compile-time safety
- Persistent: Language preference saved locally
- Light/Dark Mode: Full theme support with Material 3
- System Following: Auto-detect system theme preference
- Custom Colors: Carefully crafted color schemes for both themes
- Persistent: Theme preference saved across sessions
- Riverpod: Type-safe, compile-time state management
- Auto Updates: Reactive UI updates on state changes
- Clean Architecture: Separation of business logic and UI
- Provider Pattern: Scalable and testable architecture
lib/
βββ main.dart # App entry point
βββ core/
β βββ constants/
β β βββ app_colors.dart # Color palette (light/dark)
β β βββ app_sizes.dart # Spacing & breakpoints
β β βββ app_text_styles.dart # Typography system
β βββ providers/
β β βββ locale_provider.dart # Language state
β β βββ theme_provider.dart # Theme state
β βββ services/
β β βββ locale_service.dart # Locale persistence
β β βββ theme_service.dart # Theme persistence
β βββ utils/
β β βββ responsive_helper.dart # Device detection utilities
β βββ widgets/
β βββ responsive_layout.dart # Adaptive layout widgets
β βββ responsive_grid.dart # Responsive grids
β βββ responsive_builder.dart # Builder utilities
βββ presentation/
β βββ screens/
β β βββ home_page.dart # Main screen
β β βββ settings_page.dart # Language & theme settings
β β βββ responsive_demo_page.dart # Responsive showcase
β βββ widgets/
β βββ responsive_builder.dart # Custom widgets
βββ l10n/ # Localization files
βββ app_en.arb # English
βββ app_ko.arb # Korean
βββ app_ja.arb # Japanese
- Flutter SDK: 3.3.4 or higher
- Dart SDK: 3.3.4 or higher
- Clone the repository
git clone https://github.com/kaywalker91/Flutter_Practice.git
cd Flutter_Practice- Install dependencies
flutter pub get- Run the app
flutter run| Package | Version | Purpose |
|---|---|---|
| flutter_riverpod | ^2.5.1 | State management |
| flutter_screenutil | ^5.9.3 | Responsive UI scaling |
| shared_preferences | ^2.2.3 | Local storage |
| flutter_localizations | SDK | Internationalization |
| intl | ^0.18.1 | Formatting & localization |
// Responsive sizing with ScreenUtil
Container(
width: 300.w, // 300 design units
height: 200.h, // 200 design units
padding: EdgeInsets.all(16.w),
child: Text(
'Responsive Text',
style: TextStyle(fontSize: 16.sp),
),
)// Different layouts for different devices
ResponsiveLayout(
mobile: MobileLayout(),
tablet: TabletLayout(),
desktop: DesktopLayout(),
)// Watch and update state with Riverpod
class MyWidget extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
// Watch state (rebuilds on change)
final locale = ref.watch(localeProvider);
// Update state
ref.read(localeProvider.notifier).setLocale(Locale('ko'));
return Text('Language: ${locale.languageCode}');
}
}// Access localized strings
final l10n = AppLocalizations.of(context)!;
Text(l10n.appTitle)- Phone: < 600dp (2 grid columns)
- Tablet: 600-1023dp (3-4 grid columns)
- Desktop: β₯ 1024dp (4-6 grid columns)
- Phone Portrait: 375Γ812 (iPhone X)
- Phone Landscape: 812Γ375
- Tablet Portrait: 768Γ1024 (iPad mini)
- Tablet Landscape: 1024Γ768
- Auto-switching design size based on device type
- Orientation-aware layout changes
- Dynamic grid column calculation
- Responsive spacing and typography
# Debug APK
flutter build apk
# Release APK
flutter build apk --release
# App Bundle
flutter build appbundle --releaseflutter build ios --releaseflutter build web# Run all tests
flutter test
# Run with coverage
flutter test --coverage
# Analyze code
flutter analyze
# Format code
dart format .For detailed implementation guides, see:
RIVERPOD_IMPLEMENTATION.md- State management setupRESPONSIVE_UI_IMPLEMENTATION.md- Responsive system detailsQUICK_REFERENCE.md- Quick reference guideCLAUDE.md- Claude Code integration guide
This project demonstrates:
- Clean Architecture principles
- SOLID design patterns
- Responsive UI best practices
- Type-safe state management
- Internationalization workflows
- Theme customization
- Local data persistence
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter Documentation
- Riverpod Documentation
- ScreenUtil Package
- Material Design 3 Guidelines
Created by @kaywalker91
Made with β€οΈ using Flutter