A Flutter mobile application for browsing, searching, and learning about world countries with favorite management capabilities.
- Browse Countries: View all countries with flags, names, and population
- Search: Real-time country search with debouncing
- Country Details: Detailed information including area, population, region, timezones
- Favorites: Save and manage favorite countries with local persistence
- Responsive UI: Clean, modern interface following Material Design
- Flutter 3.29.3 - Dart framework
- State Management: BLoC with Cubit
- HTTP Client: Dio with caching
- Local Storage: Shared Preferences
- Routing: Go Router for navigation
- UI: Custom theme with shimmer loading states
The app follows a clean architecture pattern with:
- Data Layer: API service and local storage
- Domain Layer: BLoC for state management
- Presentation Layer: Widgets and screens
- Clone the repository
- git clone https://github.com/tedtadesse/countries_app
- cd countries_app
- Install dependencies
- flutter pub get
- Run the app
- flutter run
lib/ ├── core/ │ ├── di/ # Dependency injection │ ├── services/ # API & local storage │ └── theme/ # App themes & styling ├── data/ │ └── models/ # Data models └── features/ ├── home/ # Country list & search ├── favorites/ # Favorite management └── country_detail/ # Detailed country view
Uses REST Countries API with:
- Minimal data fetching for lists
- Detailed data for individual countries
- Caching for performance
Generate APK:
- flutter build apk --release