A modern, feature-rich News Application built with Flutter, designed to keep you updated with the latest headlines from around the world.
- Browse News: Access breaking news and top headlines.
- Categories: Filter news by categories (Business, Entertainment, Health, Science, Sports, Technology).
- Offline Support: Cache news for offline reading.
- Search: Search for specific news articles.
- Dark/Light Mode: Seamless theme switching.
- Responsive Design: Optimized for various screen sizes.
This project leverages a robust stack of libraries and tools to ensure performance, scalability, and maintainability:
- Framework: Flutter
- Language: Dart
- State Management: Flutter Bloc & Hydrated Bloc
- Dependency Injection: GetIt
- Networking: Dio
- Routing: GoRouter
- Functional Programming: Dartz
- Local Storage: Shared Preferences
- UI/UX:
- Skeletonizer (Loading effects)
- Lottie (Animations)
- Cached Network Image
The project follows a Feature-First architecture to ensure scalability and separation of concerns:
lib/
βββ core/ # Core functionality (Routes, Themes, Utils, Network)
βββ features/ # Feature-based modules (e.g., get_news)
β βββ get_news/
β βββ data/ # Data layer (Repositories, Data Sources, Models)
β βββ domain/ # Domain layer (Entities, Use Cases)
β βββ presentation/ # UI layer (Blocs, Pages, Widgets)
βββ main.dart # Application entry point
βββ utility.dart # General utilities
| Light | Dark |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
This application uses the NewsAPI:
- API: https://newsapi.org
- Endpoint:
newsApiLite - You need an API key to fetch news articles.
Follow these steps to set up the project locally.
- Flutter SDK
- Dart SDK
- An IDE (VS Code, Android Studio, or IntelliJ)
-
Clone the repository:
git clone https://github.com/Mohamedismaell/News.git cd News_App -
Install dependencies:
flutter pub get
-
Run the app:
flutter run
To run the tests:
flutter testContributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your Feature Branch
- Commit your changes
- Push to the Branch
- Open a Pull Request











