A beautiful and responsive Flutter application showcasing the most stunning tourist destinations in Pakistan. The app adapts its layout based on screen size, providing an optimal viewing experience across mobile, tablet, and desktop devices.
- Responsive Design: Automatically adapts to different screen sizes (mobile, tablet, desktop)
- Beautiful UI: Showcases Pakistani tourist destinations with stunning imagery
- Interactive Gallery: Grid-based photo gallery with smooth navigation
- Detailed Views: Comprehensive information about each destination
- Cross-Platform: Works seamlessly on Android, iOS, and Web
- Full-screen image gallery
- Navigation drawer for state selection
- Dedicated details page for each destination
- Split view with drawer sidebar and gallery
- Enhanced viewing experience with more screen real estate
- Three-panel layout: drawer, gallery, and details
- Horizontal gallery for easy browsing
- Simultaneous viewing of gallery and destination details
The app showcases 11 beautiful locations across Pakistan:
- Fairy Meadows - Alpine meadow with views of Nanga Parbat
- Hunza Valley - Cultural richness with snow-capped peaks
- Shangrila Resort - Luxury resort near Skardu with turquoise lakes
- Naltar Valley - Pristine beauty with skiing opportunities
- Neelum Valley - Lush forests and waterfalls in Azad Kashmir
- Swat Valley - "Switzerland of the East" with Buddhist heritage
- Kalash Valley - Home to the unique Kalash culture
- Badshahi Mosque - Magnificent Mughal architecture in Lahore
- Lahore Fort - UNESCO World Heritage Site
- Mohenjo-daro - Ancient Indus Valley Civilization ruins
- Makli Necropolis - Historic graveyard with intricate stone carvings
- Flutter SDK (latest stable version)
- Dart SDK
- Android Studio / VS Code with Flutter extensions
- Android/iOS simulator or physical device
Add these dependencies to your pubspec.yaml:
dependencies:
flutter:
sdk: flutter
auto_size_text: ^3.0.0
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0-
Clone the repository
git clone https://github.com/saqibcheema/responsive-design-tour-app-ui.git cd responsive_tour_app -
Install dependencies
flutter pub get
-
Add image assets
Create an
imagesfolder in the root directory and add the following images:fairymedows.jpghunzavalley.jpgneelumvalley.jpgshanrila.jpgswat.jpgnaltar.jpgkalash.jpegmohenjo.jpegbadshahi.jpgmakli.jpgfort.jpg
-
Update pubspec.yaml
flutter: assets: - images/
-
Run the application
flutter run
lib/
βββ data/
β βββ places.dart # Tourist destinations data
β βββ states.dart # Pakistani states/regions list
βββ model/
β βββ place.dart # Place data model
βββ pages/
β βββ home_page.dart # Main application page
β βββ details_page.dart # Destination details page
βββ widgets/
β βββ drawer_widget.dart # Navigation drawer
β βββ gallery_item_widget.dart # Individual gallery item
β βββ place_gallery_widget.dart # Gallery grid view
β βββ responsive_widget.dart # Responsive layout handler
βββ main.dart # Application entry point
The app uses the following breakpoints for responsive design:
- Mobile: β€ 600px width
- Tablet: 600px - 840px width
- Desktop: β₯ 840px width
Handles responsive layout switching based on screen size:
ResponsiveWidget(
mobile: buildMobile(),
tablet: buildTablet(),
desktop: buildDesktop(),
)Simple data structure for tourist destinations:
class Place {
final String image;
final String title;
final String subtitle;
final String description;
}Enables mouse and touch scrolling across all platforms:
class CustomScrollBehaviour extends MaterialScrollBehavior {
@override
Set<PointerDeviceKind> get dragDevices => {
PointerDeviceKind.mouse,
PointerDeviceKind.touch
};
}Uses auto_size_text package for responsive typography that adapts to different screen sizes.
- Grid layout that adjusts based on device orientation
- Smooth navigation between destinations
- Touch/click interactions optimized for each platform
Simple setState-based state management for place selection and UI updates.
flutter build apk --releaseflutter build ios --releaseflutter build web --release- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Images of Pakistani tourist destinations
- Flutter team for the amazing framework
- Contributors to the
auto_size_textpackage
For any queries or suggestions, please reach out:
- Email: saqibyu961@gmail.com
- GitHub: https://github.com/saqibcheema
Made with β€οΈ using Flutter