├── .gitignore
├── .metadata
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── ic_launcher-playstore.png
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── kevynmh
│ │ │ │ └── flutter_projects
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ │ └── values
│ │ │ ├── ic_launcher_background.xml
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── icons
│ ├── icon.png
│ └── md_icons
│ │ ├── MdIcons.ttf
│ │ └── config.json
├── img
│ ├── boats
│ │ ├── boat1.png
│ │ ├── boat2.png
│ │ ├── boat3.png
│ │ ├── boat4.png
│ │ ├── gallery1.jpg
│ │ ├── gallery2.jpg
│ │ ├── gallery3.jpg
│ │ ├── gallery4.jpg
│ │ └── gallery5.jpg
│ ├── books
│ │ ├── black buck.jpg
│ │ ├── breath.jpg
│ │ ├── dont promise me rainbows.jpg
│ │ ├── food what should i cook.jpg
│ │ ├── food what should i eat.jpg
│ │ ├── it ends with us.jpg
│ │ ├── poisoned.jpg
│ │ ├── see her die.jpg
│ │ ├── small time.jpg
│ │ ├── the book of why.jpg
│ │ ├── the copenhagen trilogy.jpg
│ │ ├── the dancing girls.jpg
│ │ ├── the food lab.jpg
│ │ ├── the four winds.jpg
│ │ ├── the lives of lucian freud.jpg
│ │ ├── the shining.jpg
│ │ ├── the ultimate hitchhikers guide to the galaxy.jpg
│ │ └── when harry met minnie.jpg
│ ├── findout
│ │ ├── background1.jpg
│ │ ├── background2.jpg
│ │ ├── background3.jpg
│ │ ├── bar.jpg
│ │ ├── friends1.jpg
│ │ ├── friends2.jpg
│ │ ├── friends3.jpg
│ │ └── map.jpg
│ ├── flags
│ │ ├── belgium.png
│ │ ├── brazil.png
│ │ ├── canada.png
│ │ ├── china.png
│ │ ├── colombia.png
│ │ ├── egypt.png
│ │ ├── england.png
│ │ ├── italy.png
│ │ ├── mexico.png
│ │ ├── south-africa.png
│ │ ├── south-korea.png
│ │ ├── sweden.png
│ │ ├── united-kingdom.png
│ │ └── united-states-of-america.png
│ ├── gaming
│ │ ├── animal_crossing.jpg
│ │ ├── boy.png
│ │ ├── codwarzone.jpg
│ │ ├── crash_bandicoot_4.jpg
│ │ ├── cyberpunk2077.jpg
│ │ ├── doom_eternal.jpg
│ │ ├── fall_guys.jpg
│ │ ├── lol.jpg
│ │ ├── ori.jpg
│ │ ├── orix_cube.png
│ │ ├── spiderman.jpg
│ │ └── valorant.jpg
│ ├── instagram
│ │ ├── discord.png
│ │ ├── facebook.png
│ │ ├── github.png
│ │ ├── instagram.png
│ │ ├── snapchat.png
│ │ ├── twitch.png
│ │ ├── twitter.png
│ │ ├── unsplash.png
│ │ ├── uplabs.png
│ │ └── youtube.png
│ ├── movie
│ │ ├── actor1.jpg
│ │ ├── actor2.jpg
│ │ ├── actor3.jpg
│ │ ├── actor4.jpg
│ │ ├── actor5.jpg
│ │ ├── apokolips_war.jpg
│ │ ├── bad_boys2.jpg
│ │ ├── bird_prey.jpg
│ │ ├── jojo_rabbit.jpg
│ │ ├── kissing_both.jpg
│ │ ├── mision_rescate.jpg
│ │ ├── mortal_kombat.jpg
│ │ ├── onward.jpg
│ │ ├── qr_code.png
│ │ ├── rambo.jpg
│ │ ├── red_son.jpg
│ │ ├── sonic.jpg
│ │ └── star_wars.jpg
│ ├── music
│ │ ├── bipolar.jpg
│ │ ├── cortamanbo.jpg
│ │ ├── espejo.jpg
│ │ ├── jueves.jpg
│ │ ├── porfiado.jpg
│ │ ├── raro.jpg
│ │ ├── vinyl.png
│ │ └── zombie.jpg
│ ├── projects
│ │ ├── boats.gif
│ │ ├── book_app.gif
│ │ ├── broco.png
│ │ ├── findout.png
│ │ ├── heroes.gif
│ │ ├── ig.png
│ │ ├── medical_appointment.png
│ │ ├── movie.gif
│ │ ├── music.gif
│ │ ├── music_two.png
│ │ ├── orix_gaming.jpg
│ │ ├── photographers_app.png
│ │ ├── streaming_app.png
│ │ ├── template_gallery.gif
│ │ ├── travel.gif
│ │ └── vpn.jpg
│ ├── streaming
│ │ ├── Descubrir@3x.png
│ │ ├── Explorar@3x.png
│ │ ├── Profile@3x.png
│ │ ├── blue-particles.png
│ │ ├── clash.png
│ │ ├── controls-ilustration.png
│ │ ├── free.png
│ │ ├── lol.png
│ │ ├── purple-particles.png
│ │ └── red-particles.png
│ └── superheroes
│ │ ├── antman-a.png
│ │ ├── blackwidow-a.png
│ │ ├── captain-b.png
│ │ ├── hawkeye.png
│ │ ├── hulk-b.png
│ │ ├── ironman-a.png
│ │ ├── marvel_logo.jpg
│ │ ├── spiderman-a.png
│ │ └── thor-c.png
└── svg
│ ├── instagram
│ └── heart_colored.svg
│ ├── medical
│ ├── mc-blood-pressure.svg
│ ├── mc-cardiogram.svg
│ ├── mc-cholesterol.svg
│ ├── mc-glucose.svg
│ ├── mc-height.svg
│ ├── mc-hemoglobin.svg
│ ├── mc-weight.svg
│ ├── mi-drink-water.svg
│ ├── mi-eat-vegatables.svg
│ ├── mi-make-exercise.svg
│ ├── mi-no-coffee.svg
│ ├── mi-no-drinking.svg
│ └── mi-no-fast-food.svg
│ └── streaming
│ ├── action.svg
│ ├── music.svg
│ ├── skull.svg
│ └── tenis-ball.svg
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
└── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon-App-1024x1024@1x.png
│ │ ├── Icon-App-20x20@1x.png
│ │ ├── Icon-App-20x20@2x.png
│ │ ├── Icon-App-20x20@3x.png
│ │ ├── Icon-App-29x29@1x.png
│ │ ├── Icon-App-29x29@2x.png
│ │ ├── Icon-App-29x29@3x.png
│ │ ├── Icon-App-40x40@1x.png
│ │ ├── Icon-App-40x40@2x.png
│ │ ├── Icon-App-40x40@3x.png
│ │ ├── Icon-App-60x60@2x.png
│ │ ├── Icon-App-60x60@3x.png
│ │ ├── Icon-App-76x76@1x.png
│ │ ├── Icon-App-76x76@2x.png
│ │ └── Icon-App-83.5x83.5@2x.png
│ └── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── LaunchImage.png
│ │ ├── LaunchImage@2x.png
│ │ ├── LaunchImage@3x.png
│ │ └── README.md
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
├── lib
├── core
│ ├── app
│ │ └── app.dart
│ ├── models
│ │ └── project_model.dart
│ ├── routes
│ │ └── routes.dart
│ ├── shared
│ │ └── ui
│ │ │ └── animations
│ │ │ └── tween_animations.dart
│ └── ui
│ │ ├── screens
│ │ └── broco_projects_screen.dart
│ │ └── widgets
│ │ └── project_card.dart
├── main.dart
└── projects
│ ├── boats_app
│ ├── boats_app.dart
│ ├── models
│ │ └── boat.dart
│ └── ui
│ │ ├── screens
│ │ ├── boat_list_screen.dart
│ │ └── boat_specs_screen.dart
│ │ └── widgets
│ │ └── boat_card.dart
│ ├── bookstore_app
│ ├── bloc
│ │ ├── categories_bloc.dart
│ │ └── categories_bloc_provider.dart
│ ├── book_app.dart
│ ├── models
│ │ ├── book.dart
│ │ └── user_book.dart
│ ├── theme
│ │ └── theme.dart
│ └── ui
│ │ ├── screens
│ │ ├── book_detail
│ │ │ ├── book_detail_page.dart
│ │ │ ├── open_book_page.dart
│ │ │ └── widgets
│ │ │ │ └── book_detail_header.dart
│ │ ├── filters
│ │ │ └── filter_page.dart
│ │ ├── home
│ │ │ └── home_page.dart
│ │ └── navigation
│ │ │ └── book_navigation_screen.dart
│ │ └── widgets
│ │ ├── book_rate_stars.dart
│ │ ├── book_readers_row.dart
│ │ ├── cover_page_book.dart
│ │ └── widgets.dart
│ ├── find_out
│ ├── find_out_app.dart
│ ├── models
│ │ ├── comments.dart
│ │ └── place.dart
│ └── ui
│ │ ├── forms
│ │ ├── login_form.dart
│ │ └── register_form.dart
│ │ ├── screens
│ │ ├── home
│ │ │ ├── home_screen.dart
│ │ │ └── widgets
│ │ │ │ ├── drop_down_widget.dart
│ │ │ │ └── page_view_places.dart
│ │ ├── social_screen
│ │ │ ├── social_screen.dart
│ │ │ └── widgets
│ │ │ │ ├── background_shader_image.dart
│ │ │ │ ├── comment_card.dart
│ │ │ │ ├── custom_bottom_navigation.dart
│ │ │ │ ├── place_information_card.dart
│ │ │ │ ├── social_screen_header.dart
│ │ │ │ └── widgets.dart
│ │ └── welcome_screen
│ │ │ ├── welcome_screen.dart
│ │ │ └── widgets
│ │ │ ├── animated_background.dart
│ │ │ └── snake_button.dart
│ │ └── widgets
│ │ ├── common_widgets.dart
│ │ ├── inverted_top_border_clipper.dart
│ │ └── text_input_find_out.dart
│ ├── instagram_redesign
│ ├── bloc
│ │ ├── bloc_provider.dart
│ │ └── instagram_bloc.dart
│ ├── instagram_app.dart
│ ├── models
│ │ ├── ig_activity.dart
│ │ ├── ig_collection.dart
│ │ ├── ig_external_platform.dart
│ │ ├── ig_post.dart
│ │ ├── ig_user.dart
│ │ └── ig_user_stories.dart
│ ├── theme
│ │ └── themes.dart
│ └── ui
│ │ ├── pages
│ │ ├── activity
│ │ │ ├── activities_page.dart
│ │ │ └── widgets
│ │ │ │ ├── activity_container.dart
│ │ │ │ ├── type_activity_toggle_button.dart
│ │ │ │ └── widgets.dart
│ │ ├── home
│ │ │ ├── instagram_home.dart
│ │ │ └── widgets
│ │ │ │ ├── instagram_add_story.dart
│ │ │ │ ├── instagram_stories_item.dart
│ │ │ │ ├── settings_blur_card.dart
│ │ │ │ └── widgets.dart
│ │ └── profile
│ │ │ ├── instagram_profile.dart
│ │ │ └── widgets
│ │ │ ├── bottom_tab_view_profile.dart
│ │ │ ├── profile_app_bar.dart
│ │ │ ├── title_subtitle_text.dart
│ │ │ └── widgets.dart
│ │ ├── screens
│ │ ├── navigation
│ │ │ └── instagram_navigation_screen.dart
│ │ ├── post_detail
│ │ │ ├── instagram_post_detail.dart
│ │ │ └── widgets
│ │ │ │ ├── add_comment_text_field.dart
│ │ │ │ ├── comment_list_tile.dart
│ │ │ │ └── widgets.dart
│ │ └── story
│ │ │ ├── instagram_stories.dart
│ │ │ └── widgets
│ │ │ ├── animated_line.dart
│ │ │ ├── icon_blur_button.dart
│ │ │ ├── send_message_text_field.dart
│ │ │ └── widgets.dart
│ │ └── widgets
│ │ ├── ample_post_card.dart
│ │ ├── clean_post_card.dart
│ │ ├── footer_post.dart
│ │ ├── ig_user_border_image.dart
│ │ ├── like_button.dart
│ │ ├── page_indicators.dart
│ │ ├── post_buttons.dart
│ │ ├── red_dot.dart
│ │ ├── rounded_border_image.dart
│ │ ├── rounded_navigation_bar.dart
│ │ └── widgets.dart
│ ├── medical_appointment
│ ├── medical_app.dart
│ ├── models
│ │ ├── md_address.dart
│ │ ├── md_appointment.dart
│ │ ├── md_check.dart
│ │ ├── md_doctor.dart
│ │ ├── md_doctor_category.dart
│ │ ├── md_indication.dart
│ │ ├── md_patient.dart
│ │ └── medical_check_item.dart
│ ├── ui
│ │ ├── doctors
│ │ │ └── doctors_page.dart
│ │ ├── home
│ │ │ ├── home_page.dart
│ │ │ ├── painters
│ │ │ │ └── tongue_painter.dart
│ │ │ └── widgets
│ │ │ │ ├── appointment_details.dart
│ │ │ │ ├── category_card.dart
│ │ │ │ ├── home_widgets.dart
│ │ │ │ ├── medical_check_card.dart
│ │ │ │ ├── next_appointment_card.dart
│ │ │ │ ├── search_app_bar.dart
│ │ │ │ └── top_doctors_card.dart
│ │ └── widgets
│ │ │ └── top_rounded_navigation_bar.dart
│ └── utils
│ │ ├── md_app_colors.dart
│ │ ├── md_icons_icons.dart
│ │ └── md_utils.dart
│ ├── movie_selection
│ ├── constants
│ │ └── constants.dart
│ ├── models
│ │ ├── actors.dart
│ │ ├── billboard.dart
│ │ ├── movie.dart
│ │ └── seats.dart
│ ├── movie_selection_app.dart
│ └── ui
│ │ ├── screens
│ │ ├── cinema_selection
│ │ │ ├── cinema_selection_page.dart
│ │ │ └── widgets
│ │ │ │ ├── hour_container.dart
│ │ │ │ ├── hours_movie_list.dart
│ │ │ │ └── select_cinema.dart
│ │ ├── detail
│ │ │ ├── movie_detail.dart
│ │ │ └── widgets
│ │ │ │ ├── actors_list.dart
│ │ │ │ ├── gradient_button.dart
│ │ │ │ ├── movie_main_details.dart
│ │ │ │ └── synopsis.dart
│ │ ├── home
│ │ │ ├── movie_home.dart
│ │ │ └── widgets
│ │ │ │ ├── billboard_list.dart
│ │ │ │ └── header_option.dart
│ │ ├── payment
│ │ │ └── payment_page.dart
│ │ ├── seats_selection
│ │ │ ├── seats_selection_page.dart
│ │ │ └── widgets
│ │ │ │ └── seats_selection_widgets.dart
│ │ ├── summary
│ │ │ └── summary_page.dart
│ │ └── ticket
│ │ │ ├── ticket_page.dart
│ │ │ └── widgets
│ │ │ └── ticket_page_widgets.dart
│ │ └── widgets
│ │ ├── credit_card_slide.dart
│ │ ├── gradient_animation_button.dart
│ │ ├── row_stars.dart
│ │ ├── tag_container.dart
│ │ └── top_bordered_container.dart
│ ├── music_album_collection
│ ├── models
│ │ └── album_model.dart
│ ├── music_album_collection.dart
│ └── screens
│ │ ├── albums
│ │ ├── albums_screen.dart
│ │ └── widgets
│ │ │ ├── album_grid_view_card.dart
│ │ │ └── album_list_view_card.dart
│ │ ├── music_player
│ │ ├── music_player_screen.dart
│ │ └── widgets
│ │ │ ├── animated_player_controls.dart
│ │ │ └── wave_painter.dart
│ │ └── widgets
│ │ └── album_card_text.dart
│ ├── music_vinyl_player
│ ├── models
│ │ ├── album.dart
│ │ └── song.dart
│ ├── music_vinyl_player.dart
│ └── ui
│ │ ├── my_library
│ │ ├── my_library_page.dart
│ │ └── widgets
│ │ │ ├── description_card.dart
│ │ │ ├── my_library_widgets.dart
│ │ │ ├── row_stars.dart
│ │ │ ├── song_play_footer.dart
│ │ │ └── vinyl_disk_card.dart
│ │ ├── song_player
│ │ ├── song_player_page.dart
│ │ └── widgets
│ │ │ ├── now_playing_app_bar.dart
│ │ │ ├── player_controls.dart
│ │ │ ├── player_indicator.dart
│ │ │ └── song_player_widgets.dart
│ │ └── widgets
│ │ └── vinyl_disk.dart
│ ├── orix_gaming
│ ├── models
│ │ └── video_game.dart
│ ├── orix_gaming_app.dart
│ └── ui
│ │ ├── home
│ │ ├── orix_gaming_home_page.dart
│ │ └── widgets
│ │ │ └── game_play_card.dart
│ │ ├── trending
│ │ └── orix_trending_page.dart
│ │ └── widgets
│ │ ├── orix_navigation_bar.dart
│ │ ├── rounded_icon_button.dart
│ │ └── user_avatar.dart
│ ├── photographers_app
│ ├── models
│ │ ├── post.dart
│ │ └── users.dart
│ ├── photographers_app.dart
│ ├── theme
│ │ └── photo_app_colors.dart
│ └── ui
│ │ ├── home
│ │ ├── photo_home_page.dart
│ │ └── widgets
│ │ │ └── image_user_container.dart
│ │ ├── profile
│ │ └── photo_profile_page.dart
│ │ └── widgets
│ │ ├── curved_navigation_bar.dart
│ │ ├── photo_post_card.dart
│ │ ├── tile_clipper.dart
│ │ └── tile_skew_clipper.dart
│ ├── superheroes
│ ├── models
│ │ └── superhero.dart
│ ├── superheroes_app.dart
│ └── ui
│ │ ├── superhero_detail_page.dart
│ │ ├── superhero_slider_page.dart
│ │ └── widgets
│ │ └── superhero_card.dart
│ ├── template_gallery
│ ├── models
│ │ └── contact.dart
│ ├── template_gallery_app.dart
│ └── ui
│ │ ├── contact_detail_screen.dart
│ │ ├── contact_list_page.dart
│ │ └── widgets
│ │ ├── cards.dart
│ │ └── perspective_list_view.dart
│ └── travel_app
│ ├── extensions
│ └── text_theme_x.dart
│ ├── models
│ └── place.dart
│ ├── theme
│ └── theme.dart
│ ├── travel_app.dart
│ └── ui
│ ├── detail
│ ├── place_detail_screen.dart
│ └── widgets
│ │ ├── animated_detail_header.dart
│ │ ├── place_comments_widget.dart
│ │ └── place_images_page_view.dart
│ ├── feed
│ ├── feed_screen.dart
│ └── widgets
│ │ ├── place_card.dart
│ │ └── travel_navigation_bar.dart
│ └── widgets
│ ├── gradient_status_tag.dart
│ └── translate_animation.dart
└── pubspec.yaml
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 |
12 | # IntelliJ related
13 | *.iml
14 | *.ipr
15 | *.iws
16 | .idea/
17 |
18 | # The .vscode folder contains launch configuration and tasks you configure in
19 | # VS Code which you may wish to be included in version control, so this line
20 | # is commented out by default.
21 | #.vscode/
22 |
23 | # Flutter/Dart/Pub related
24 | **/doc/api/
25 | **/ios/Flutter/.last_build_id
26 | .dart_tool/
27 | .flutter-plugins
28 | .flutter-plugins-dependencies
29 | .packages
30 | .pub-cache/
31 | .pub/
32 | /build/
33 |
34 | # Web related
35 | lib/generated_plugin_registrant.dart
36 |
37 | # Symbolication related
38 | app.*.symbols
39 |
40 | # Obfuscation related
41 | app.*.map.json
42 | pubspec.lock
43 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: d408d302e22179d598f467e11da5dd968dbdc9ec
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:flutter_lints/flutter.yaml
2 | linter:
3 | rules:
4 |
5 | analyzer:
6 | strong-mode:
7 | implicit-casts: true
8 | implicit-dynamic: true
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
8 |
9 |
13 |
21 |
25 |
28 |
29 |
30 |
31 |
32 |
33 |
35 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/android/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/android/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/kevynmh/flutter_projects/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.kevynmh.flutter_projects
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #0C2019
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.6.10'
3 | repositories {
4 | google()
5 | mavenCentral()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:7.1.2'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | mavenCentral()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | }
25 | subprojects {
26 | project.evaluationDependsOn(':app')
27 | }
28 |
29 | tasks.register("clean", Delete) {
30 | delete rootProject.buildDir
31 | }
32 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Feb 05 11:11:39 CST 2022
2 | distributionBase=GRADLE_USER_HOME
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
4 | distributionPath=wrapper/dists
5 | zipStorePath=wrapper/dists
6 | zipStoreBase=GRADLE_USER_HOME
7 |
8 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4 | def properties = new Properties()
5 |
6 | assert localPropertiesFile.exists()
7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
8 |
9 | def flutterSdkPath = properties.getProperty("flutter.sdk")
10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
12 |
--------------------------------------------------------------------------------
/assets/icons/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/icons/icon.png
--------------------------------------------------------------------------------
/assets/icons/md_icons/MdIcons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/icons/md_icons/MdIcons.ttf
--------------------------------------------------------------------------------
/assets/img/boats/boat1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/boats/boat1.png
--------------------------------------------------------------------------------
/assets/img/boats/boat2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/boats/boat2.png
--------------------------------------------------------------------------------
/assets/img/boats/boat3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/boats/boat3.png
--------------------------------------------------------------------------------
/assets/img/boats/boat4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/boats/boat4.png
--------------------------------------------------------------------------------
/assets/img/boats/gallery1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/boats/gallery1.jpg
--------------------------------------------------------------------------------
/assets/img/boats/gallery2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/boats/gallery2.jpg
--------------------------------------------------------------------------------
/assets/img/boats/gallery3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/boats/gallery3.jpg
--------------------------------------------------------------------------------
/assets/img/boats/gallery4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/boats/gallery4.jpg
--------------------------------------------------------------------------------
/assets/img/boats/gallery5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/boats/gallery5.jpg
--------------------------------------------------------------------------------
/assets/img/books/black buck.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/black buck.jpg
--------------------------------------------------------------------------------
/assets/img/books/breath.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/breath.jpg
--------------------------------------------------------------------------------
/assets/img/books/dont promise me rainbows.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/dont promise me rainbows.jpg
--------------------------------------------------------------------------------
/assets/img/books/food what should i cook.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/food what should i cook.jpg
--------------------------------------------------------------------------------
/assets/img/books/food what should i eat.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/food what should i eat.jpg
--------------------------------------------------------------------------------
/assets/img/books/it ends with us.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/it ends with us.jpg
--------------------------------------------------------------------------------
/assets/img/books/poisoned.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/poisoned.jpg
--------------------------------------------------------------------------------
/assets/img/books/see her die.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/see her die.jpg
--------------------------------------------------------------------------------
/assets/img/books/small time.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/small time.jpg
--------------------------------------------------------------------------------
/assets/img/books/the book of why.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/the book of why.jpg
--------------------------------------------------------------------------------
/assets/img/books/the copenhagen trilogy.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/the copenhagen trilogy.jpg
--------------------------------------------------------------------------------
/assets/img/books/the dancing girls.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/the dancing girls.jpg
--------------------------------------------------------------------------------
/assets/img/books/the food lab.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/the food lab.jpg
--------------------------------------------------------------------------------
/assets/img/books/the four winds.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/the four winds.jpg
--------------------------------------------------------------------------------
/assets/img/books/the lives of lucian freud.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/the lives of lucian freud.jpg
--------------------------------------------------------------------------------
/assets/img/books/the shining.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/the shining.jpg
--------------------------------------------------------------------------------
/assets/img/books/the ultimate hitchhikers guide to the galaxy.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/the ultimate hitchhikers guide to the galaxy.jpg
--------------------------------------------------------------------------------
/assets/img/books/when harry met minnie.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/books/when harry met minnie.jpg
--------------------------------------------------------------------------------
/assets/img/findout/background1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/findout/background1.jpg
--------------------------------------------------------------------------------
/assets/img/findout/background2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/findout/background2.jpg
--------------------------------------------------------------------------------
/assets/img/findout/background3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/findout/background3.jpg
--------------------------------------------------------------------------------
/assets/img/findout/bar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/findout/bar.jpg
--------------------------------------------------------------------------------
/assets/img/findout/friends1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/findout/friends1.jpg
--------------------------------------------------------------------------------
/assets/img/findout/friends2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/findout/friends2.jpg
--------------------------------------------------------------------------------
/assets/img/findout/friends3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/findout/friends3.jpg
--------------------------------------------------------------------------------
/assets/img/findout/map.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/findout/map.jpg
--------------------------------------------------------------------------------
/assets/img/flags/belgium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/belgium.png
--------------------------------------------------------------------------------
/assets/img/flags/brazil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/brazil.png
--------------------------------------------------------------------------------
/assets/img/flags/canada.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/canada.png
--------------------------------------------------------------------------------
/assets/img/flags/china.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/china.png
--------------------------------------------------------------------------------
/assets/img/flags/colombia.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/colombia.png
--------------------------------------------------------------------------------
/assets/img/flags/egypt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/egypt.png
--------------------------------------------------------------------------------
/assets/img/flags/england.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/england.png
--------------------------------------------------------------------------------
/assets/img/flags/italy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/italy.png
--------------------------------------------------------------------------------
/assets/img/flags/mexico.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/mexico.png
--------------------------------------------------------------------------------
/assets/img/flags/south-africa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/south-africa.png
--------------------------------------------------------------------------------
/assets/img/flags/south-korea.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/south-korea.png
--------------------------------------------------------------------------------
/assets/img/flags/sweden.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/sweden.png
--------------------------------------------------------------------------------
/assets/img/flags/united-kingdom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/united-kingdom.png
--------------------------------------------------------------------------------
/assets/img/flags/united-states-of-america.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/flags/united-states-of-america.png
--------------------------------------------------------------------------------
/assets/img/gaming/animal_crossing.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/gaming/animal_crossing.jpg
--------------------------------------------------------------------------------
/assets/img/gaming/boy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/gaming/boy.png
--------------------------------------------------------------------------------
/assets/img/gaming/codwarzone.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/gaming/codwarzone.jpg
--------------------------------------------------------------------------------
/assets/img/gaming/crash_bandicoot_4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/gaming/crash_bandicoot_4.jpg
--------------------------------------------------------------------------------
/assets/img/gaming/cyberpunk2077.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/gaming/cyberpunk2077.jpg
--------------------------------------------------------------------------------
/assets/img/gaming/doom_eternal.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/gaming/doom_eternal.jpg
--------------------------------------------------------------------------------
/assets/img/gaming/fall_guys.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/gaming/fall_guys.jpg
--------------------------------------------------------------------------------
/assets/img/gaming/lol.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/gaming/lol.jpg
--------------------------------------------------------------------------------
/assets/img/gaming/ori.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/gaming/ori.jpg
--------------------------------------------------------------------------------
/assets/img/gaming/orix_cube.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/gaming/orix_cube.png
--------------------------------------------------------------------------------
/assets/img/gaming/spiderman.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/gaming/spiderman.jpg
--------------------------------------------------------------------------------
/assets/img/gaming/valorant.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/gaming/valorant.jpg
--------------------------------------------------------------------------------
/assets/img/instagram/discord.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/instagram/discord.png
--------------------------------------------------------------------------------
/assets/img/instagram/facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/instagram/facebook.png
--------------------------------------------------------------------------------
/assets/img/instagram/github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/instagram/github.png
--------------------------------------------------------------------------------
/assets/img/instagram/instagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/instagram/instagram.png
--------------------------------------------------------------------------------
/assets/img/instagram/snapchat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/instagram/snapchat.png
--------------------------------------------------------------------------------
/assets/img/instagram/twitch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/instagram/twitch.png
--------------------------------------------------------------------------------
/assets/img/instagram/twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/instagram/twitter.png
--------------------------------------------------------------------------------
/assets/img/instagram/unsplash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/instagram/unsplash.png
--------------------------------------------------------------------------------
/assets/img/instagram/uplabs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/instagram/uplabs.png
--------------------------------------------------------------------------------
/assets/img/instagram/youtube.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/instagram/youtube.png
--------------------------------------------------------------------------------
/assets/img/movie/actor1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/actor1.jpg
--------------------------------------------------------------------------------
/assets/img/movie/actor2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/actor2.jpg
--------------------------------------------------------------------------------
/assets/img/movie/actor3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/actor3.jpg
--------------------------------------------------------------------------------
/assets/img/movie/actor4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/actor4.jpg
--------------------------------------------------------------------------------
/assets/img/movie/actor5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/actor5.jpg
--------------------------------------------------------------------------------
/assets/img/movie/apokolips_war.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/apokolips_war.jpg
--------------------------------------------------------------------------------
/assets/img/movie/bad_boys2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/bad_boys2.jpg
--------------------------------------------------------------------------------
/assets/img/movie/bird_prey.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/bird_prey.jpg
--------------------------------------------------------------------------------
/assets/img/movie/jojo_rabbit.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/jojo_rabbit.jpg
--------------------------------------------------------------------------------
/assets/img/movie/kissing_both.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/kissing_both.jpg
--------------------------------------------------------------------------------
/assets/img/movie/mision_rescate.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/mision_rescate.jpg
--------------------------------------------------------------------------------
/assets/img/movie/mortal_kombat.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/mortal_kombat.jpg
--------------------------------------------------------------------------------
/assets/img/movie/onward.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/onward.jpg
--------------------------------------------------------------------------------
/assets/img/movie/qr_code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/qr_code.png
--------------------------------------------------------------------------------
/assets/img/movie/rambo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/rambo.jpg
--------------------------------------------------------------------------------
/assets/img/movie/red_son.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/red_son.jpg
--------------------------------------------------------------------------------
/assets/img/movie/sonic.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/sonic.jpg
--------------------------------------------------------------------------------
/assets/img/movie/star_wars.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/movie/star_wars.jpg
--------------------------------------------------------------------------------
/assets/img/music/bipolar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/music/bipolar.jpg
--------------------------------------------------------------------------------
/assets/img/music/cortamanbo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/music/cortamanbo.jpg
--------------------------------------------------------------------------------
/assets/img/music/espejo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/music/espejo.jpg
--------------------------------------------------------------------------------
/assets/img/music/jueves.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/music/jueves.jpg
--------------------------------------------------------------------------------
/assets/img/music/porfiado.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/music/porfiado.jpg
--------------------------------------------------------------------------------
/assets/img/music/raro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/music/raro.jpg
--------------------------------------------------------------------------------
/assets/img/music/vinyl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/music/vinyl.png
--------------------------------------------------------------------------------
/assets/img/music/zombie.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/music/zombie.jpg
--------------------------------------------------------------------------------
/assets/img/projects/boats.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/boats.gif
--------------------------------------------------------------------------------
/assets/img/projects/book_app.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/book_app.gif
--------------------------------------------------------------------------------
/assets/img/projects/broco.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/broco.png
--------------------------------------------------------------------------------
/assets/img/projects/findout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/findout.png
--------------------------------------------------------------------------------
/assets/img/projects/heroes.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/heroes.gif
--------------------------------------------------------------------------------
/assets/img/projects/ig.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/ig.png
--------------------------------------------------------------------------------
/assets/img/projects/medical_appointment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/medical_appointment.png
--------------------------------------------------------------------------------
/assets/img/projects/movie.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/movie.gif
--------------------------------------------------------------------------------
/assets/img/projects/music.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/music.gif
--------------------------------------------------------------------------------
/assets/img/projects/music_two.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/music_two.png
--------------------------------------------------------------------------------
/assets/img/projects/orix_gaming.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/orix_gaming.jpg
--------------------------------------------------------------------------------
/assets/img/projects/photographers_app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/photographers_app.png
--------------------------------------------------------------------------------
/assets/img/projects/streaming_app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/streaming_app.png
--------------------------------------------------------------------------------
/assets/img/projects/template_gallery.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/template_gallery.gif
--------------------------------------------------------------------------------
/assets/img/projects/travel.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/travel.gif
--------------------------------------------------------------------------------
/assets/img/projects/vpn.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/projects/vpn.jpg
--------------------------------------------------------------------------------
/assets/img/streaming/Descubrir@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/streaming/Descubrir@3x.png
--------------------------------------------------------------------------------
/assets/img/streaming/Explorar@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/streaming/Explorar@3x.png
--------------------------------------------------------------------------------
/assets/img/streaming/Profile@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/streaming/Profile@3x.png
--------------------------------------------------------------------------------
/assets/img/streaming/blue-particles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/streaming/blue-particles.png
--------------------------------------------------------------------------------
/assets/img/streaming/clash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/streaming/clash.png
--------------------------------------------------------------------------------
/assets/img/streaming/controls-ilustration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/streaming/controls-ilustration.png
--------------------------------------------------------------------------------
/assets/img/streaming/free.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/streaming/free.png
--------------------------------------------------------------------------------
/assets/img/streaming/lol.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/streaming/lol.png
--------------------------------------------------------------------------------
/assets/img/streaming/purple-particles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/streaming/purple-particles.png
--------------------------------------------------------------------------------
/assets/img/streaming/red-particles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/streaming/red-particles.png
--------------------------------------------------------------------------------
/assets/img/superheroes/antman-a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/superheroes/antman-a.png
--------------------------------------------------------------------------------
/assets/img/superheroes/blackwidow-a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/superheroes/blackwidow-a.png
--------------------------------------------------------------------------------
/assets/img/superheroes/captain-b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/superheroes/captain-b.png
--------------------------------------------------------------------------------
/assets/img/superheroes/hawkeye.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/superheroes/hawkeye.png
--------------------------------------------------------------------------------
/assets/img/superheroes/hulk-b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/superheroes/hulk-b.png
--------------------------------------------------------------------------------
/assets/img/superheroes/ironman-a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/superheroes/ironman-a.png
--------------------------------------------------------------------------------
/assets/img/superheroes/marvel_logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/superheroes/marvel_logo.jpg
--------------------------------------------------------------------------------
/assets/img/superheroes/spiderman-a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/superheroes/spiderman-a.png
--------------------------------------------------------------------------------
/assets/img/superheroes/thor-c.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/assets/img/superheroes/thor-c.png
--------------------------------------------------------------------------------
/assets/svg/medical/mc-cardiogram.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/svg/medical/mc-cholesterol.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/svg/medical/mc-glucose.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/svg/medical/mi-no-coffee.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/svg/streaming/music.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/assets/svg/streaming/tenis-ball.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | *.mode1v3
2 | *.mode2v3
3 | *.moved-aside
4 | *.pbxuser
5 | *.perspectivev3
6 | **/*sync/
7 | .sconsign.dblite
8 | .tags*
9 | **/.vagrant/
10 | **/DerivedData/
11 | Icon?
12 | **/Pods/
13 | **/.symlinks/
14 | profile
15 | xcuserdata
16 | **/.generated/
17 | Flutter/App.framework
18 | Flutter/Flutter.framework
19 | Flutter/Flutter.podspec
20 | Flutter/Generated.xcconfig
21 | Flutter/app.flx
22 | Flutter/app.zip
23 | Flutter/flutter_assets/
24 | Flutter/flutter_export_environment.sh
25 | ServiceDefinitions.json
26 | Runner/GeneratedPluginRegistrant.*
27 |
28 | # Exceptions to above rules.
29 | !default.mode1v3
30 | !default.mode2v3
31 | !default.pbxuser
32 | !default.perspectivev3
33 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 11.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brocodev/flutter_projects/d739d01ef8bd86222e705b288b49eb989b6cecc9/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CADisableMinimumFrameDurationOnPhone
6 |
7 | CFBundleDevelopmentRegion
8 | $(DEVELOPMENT_LANGUAGE)
9 | CFBundleDisplayName
10 | Brocodev Projects
11 | CFBundleExecutable
12 | $(EXECUTABLE_NAME)
13 | CFBundleIdentifier
14 | $(PRODUCT_BUNDLE_IDENTIFIER)
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleName
18 | flutter_projects
19 | CFBundlePackageType
20 | APPL
21 | CFBundleShortVersionString
22 | $(FLUTTER_BUILD_NAME)
23 | CFBundleSignature
24 | ????
25 | CFBundleVersion
26 | $(FLUTTER_BUILD_NUMBER)
27 | LSRequiresIPhoneOS
28 |
29 | UILaunchStoryboardName
30 | LaunchScreen
31 | UIMainStoryboardFile
32 | Main
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 | UISupportedInterfaceOrientations~ipad
40 |
41 | UIInterfaceOrientationPortrait
42 | UIInterfaceOrientationPortraitUpsideDown
43 | UIInterfaceOrientationLandscapeLeft
44 | UIInterfaceOrientationLandscapeRight
45 |
46 | UIViewControllerBasedStatusBarAppearance
47 |
48 | UIApplicationSupportsIndirectInputEvents
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/lib/core/app/app.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/core/routes/routes.dart';
3 | import 'package:google_fonts/google_fonts.dart';
4 |
5 | class BrocodevProjectsApp extends StatelessWidget {
6 | const BrocodevProjectsApp({super.key});
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return MaterialApp(
11 | debugShowCheckedModeBanner: false,
12 | title: 'Brocodev Projects',
13 | theme: ThemeData(
14 | scaffoldBackgroundColor: Colors.grey[50],
15 | textTheme: GoogleFonts.poppinsTextTheme(),
16 | visualDensity: VisualDensity.adaptivePlatformDensity,
17 | colorScheme: ColorScheme.fromSwatch(primarySwatch: Colors.blue)
18 | .copyWith(background: Colors.grey[50]),
19 | ),
20 | initialRoute: '/',
21 | routes: ProjectRoutes.routes,
22 | );
23 | }
24 | }
--------------------------------------------------------------------------------
/lib/core/routes/routes.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter_projects/core/models/project_model.dart';
3 | import 'package:flutter_projects/core/ui/screens/broco_projects_screen.dart';
4 | import 'package:flutter_projects/projects/boats_app/boats_app.dart';
5 | import 'package:flutter_projects/projects/bookstore_app/book_app.dart';
6 | import 'package:flutter_projects/projects/find_out/find_out_app.dart';
7 | import 'package:flutter_projects/projects/instagram_redesign/instagram_app.dart';
8 | import 'package:flutter_projects/projects/medical_appointment/medical_app.dart';
9 | import 'package:flutter_projects/projects/movie_selection/movie_selection_app.dart';
10 | import 'package:flutter_projects/projects/music_album_collection/music_album_collection.dart';
11 | import 'package:flutter_projects/projects/music_vinyl_player/music_vinyl_player.dart';
12 | import 'package:flutter_projects/projects/orix_gaming/orix_gaming_app.dart';
13 | import 'package:flutter_projects/projects/photographers_app/photographers_app.dart';
14 | import 'package:flutter_projects/projects/superheroes/superheroes_app.dart';
15 | import 'package:flutter_projects/projects/template_gallery/template_gallery_app.dart';
16 | import 'package:flutter_projects/projects/travel_app/travel_app.dart';
17 |
18 | class ProjectRoutes {
19 | static Map routes = {
20 | '/': (context) => const BrocoProjectsScreen(),
21 | ProjectModel.findOut.route: (_) => const FindOutApp(),
22 | ProjectModel.movieSelection.route: (_) => const MovieSelectionApp(),
23 | ProjectModel.musicApp.route: (_) => const MusicAlbumList(),
24 | ProjectModel.musicAppTwo.route: (_) => const MusicVinylPlayer(),
25 | ProjectModel.medicalAppointment.route: (_) => const MedicalApp(),
26 | ProjectModel.photographersApp.route: (_) => const PhotographersApp(),
27 | ProjectModel.instagram.route: (_) => const InstagramApp(),
28 | ProjectModel.superheroes.route: (_) => const SuperheroesApp(),
29 | ProjectModel.orixGaming.route: (_) => const OrixGamingApp(),
30 | ProjectModel.bookApp.route: (_) => const BookStoreApp(),
31 | ProjectModel.boatsApp.route: (_) => const BoatsApp(),
32 | ProjectModel.templateGallery.route: (_) => const TemplateGalleryApp(),
33 | ProjectModel.travelApp.route: (_) => const TravelApp(),
34 | };
35 | }
36 |
--------------------------------------------------------------------------------
/lib/core/ui/screens/broco_projects_screen.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/core/models/project_model.dart';
3 | import 'package:flutter_projects/core/ui/widgets/project_card.dart';
4 | import 'package:google_fonts/google_fonts.dart';
5 |
6 | class BrocoProjectsScreen extends StatelessWidget {
7 | const BrocoProjectsScreen({super.key});
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | return Scaffold(
12 | backgroundColor: Colors.white,
13 | appBar: AppBar(
14 | backgroundColor: Colors.white,
15 | elevation: 0,
16 | leading: const Padding(
17 | padding: EdgeInsets.only(left: 20),
18 | child: Center(
19 | child: CircleAvatar(
20 | backgroundImage: AssetImage('assets/img/projects/broco.png'),
21 | ),
22 | ),
23 | ),
24 | title: Text(
25 | 'Brocodev Projects',
26 | style: GoogleFonts.poppins(
27 | color: const Color(0xff001800),
28 | fontWeight: FontWeight.w600,
29 | ),
30 | ),
31 | actions: const [
32 | Padding(
33 | padding: EdgeInsets.only(right: 20),
34 | child: FlutterLogo(size: 25),
35 | )
36 | ],
37 | ),
38 | body: ListView.builder(
39 | physics: const BouncingScrollPhysics(),
40 | padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 20),
41 | itemCount: ProjectModel.listProjects.reversed.length,
42 | reverse: true,
43 | primary: true,
44 | itemBuilder: (context, index) {
45 | final project = ProjectModel.listProjects[index];
46 | return ProjectCard(
47 | project: project,
48 | index: ProjectModel.listProjects.length - index,
49 | );
50 | },
51 | ),
52 | );
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter/services.dart';
3 | import 'package:flutter_projects/core/app/app.dart';
4 |
5 | void main() {
6 | SystemChrome.setSystemUIOverlayStyle(
7 | const SystemUiOverlayStyle(
8 | statusBarColor: Colors.transparent,
9 | ),
10 | );
11 | runApp(const BrocodevProjectsApp());
12 | }
13 |
--------------------------------------------------------------------------------
/lib/projects/boats_app/boats_app.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/boats_app/ui/screens/boat_list_screen.dart';
3 |
4 | class BoatsApp extends StatelessWidget {
5 | const BoatsApp({super.key});
6 |
7 | @override
8 | Widget build(BuildContext context) {
9 | return MaterialApp(
10 | theme: ThemeData(
11 | scaffoldBackgroundColor: Colors.white,
12 | textTheme: TextTheme(
13 | headline4: TextStyle(
14 | fontSize: 32,
15 | color: Colors.grey[800],
16 | ),
17 | bodyText2: const TextStyle(fontSize: 16),
18 | ),
19 | ),
20 | home: const BoatListPage(),
21 | );
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/projects/boats_app/models/boat.dart:
--------------------------------------------------------------------------------
1 | class Boat {
2 | const Boat({
3 | required this.model,
4 | required this.owner,
5 | required this.description,
6 | required this.specs,
7 | required this.gallery,
8 | required this.imagePath,
9 | });
10 |
11 | final String model;
12 | final String owner;
13 | final String description;
14 | final Map specs;
15 | final List gallery;
16 | final String imagePath;
17 |
18 | static const _description =
19 | 'Cum agripeta cantare, omnes humani generises transferre fatalis, gratis gloses.';
20 | static const _gallery = [
21 | 'assets/img/boats/gallery1.jpg',
22 | 'assets/img/boats/gallery2.jpg',
23 | 'assets/img/boats/gallery3.jpg',
24 | 'assets/img/boats/gallery4.jpg',
25 | 'assets/img/boats/gallery5.jpg',
26 | ];
27 | static const _specs = {
28 | 'Boat Length': "24'2",
29 | 'Beam': '102\'',
30 | 'Weight': '2765 KG',
31 | 'Fuel Capacity': '322 L'
32 | };
33 | static const listBoats = [
34 | Boat(
35 | model: 'XCLR8 Speed',
36 | owner: 'Tennison',
37 | imagePath: 'assets/img/boats/boat1.png',
38 | description: _description,
39 | gallery: _gallery,
40 | specs: _specs),
41 | Boat(
42 | model: 'X-FORCE',
43 | owner: 'W - Wilson',
44 | imagePath: 'assets/img/boats/boat2.png',
45 | description: _description,
46 | gallery: _gallery,
47 | specs: _specs),
48 | Boat(
49 | model: 'X12 Force',
50 | owner: 'Mastercraft',
51 | imagePath: 'assets/img/boats/boat3.png',
52 | description: _description,
53 | gallery: _gallery,
54 | specs: _specs),
55 | Boat(
56 | model: 'X21 Strength',
57 | owner: 'NeoCraft',
58 | imagePath: 'assets/img/boats/boat4.png',
59 | description: _description,
60 | gallery: _gallery,
61 | specs: _specs),
62 | ];
63 | }
64 |
--------------------------------------------------------------------------------
/lib/projects/bookstore_app/bloc/categories_bloc.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | class CategoriesBloc {
4 | CategoriesBloc() {
5 | _eventsStreamCtrl.stream.listen(mapEventToState);
6 | }
7 |
8 | final List _listCategories = [
9 | 'Food',
10 | 'Fiction',
11 | 'Drama',
12 | 'Art',
13 | 'Programming',
14 | 'Astrology',
15 | 'Biology',
16 | ];
17 |
18 | final StreamController> _categoriesStreamCtrl =
19 | StreamController>.broadcast();
20 |
21 | final StreamController _eventsStreamCtrl =
22 | StreamController.broadcast();
23 |
24 | Stream> get categoriesStream => _categoriesStreamCtrl.stream;
25 |
26 | Sink get eventsSink => _eventsStreamCtrl.sink;
27 |
28 | Future mapEventToState(CategoriesEvent? event) async {
29 | if (event is AddCategoryEvent) {
30 | _listCategories.add(event.category);
31 | }
32 | if (event is RemoveCategoryEvent) {
33 | _listCategories.remove(event.category);
34 | }
35 | _categoriesStreamCtrl.add(_listCategories);
36 | }
37 |
38 | void dispose() {
39 | _categoriesStreamCtrl.close();
40 | _eventsStreamCtrl.close();
41 | }
42 | }
43 |
44 | abstract class CategoriesEvent {
45 | const CategoriesEvent(this.category);
46 |
47 | final String category;
48 | }
49 |
50 | class AddCategoryEvent extends CategoriesEvent {
51 | AddCategoryEvent(super.category);
52 | }
53 |
54 | class RemoveCategoryEvent extends CategoriesEvent {
55 | RemoveCategoryEvent(super.category);
56 | }
57 |
--------------------------------------------------------------------------------
/lib/projects/bookstore_app/bloc/categories_bloc_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter_projects/projects/bookstore_app/bloc/categories_bloc.dart';
3 |
4 | class CategoriesBlocProvider extends InheritedWidget {
5 | const CategoriesBlocProvider({
6 | super.key,
7 | required this.categoriesBloc,
8 | required super.child,
9 | });
10 |
11 | final CategoriesBloc categoriesBloc;
12 |
13 | static CategoriesBlocProvider? of(BuildContext context) {
14 | return context.dependOnInheritedWidgetOfExactType();
15 | }
16 |
17 | @override
18 | bool updateShouldNotify(CategoriesBlocProvider oldWidget) => true;
19 | }
20 |
--------------------------------------------------------------------------------
/lib/projects/bookstore_app/book_app.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/bookstore_app/bloc/categories_bloc.dart';
3 | import 'package:flutter_projects/projects/bookstore_app/bloc/categories_bloc_provider.dart';
4 | import 'package:flutter_projects/projects/bookstore_app/theme/theme.dart';
5 | import 'package:flutter_projects/projects/bookstore_app/ui/screens/navigation/book_navigation_screen.dart';
6 |
7 | class BookStoreApp extends StatelessWidget {
8 | const BookStoreApp({super.key});
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return CategoriesBlocProvider(
13 | categoriesBloc: CategoriesBloc(),
14 | child: MaterialApp(
15 | theme: BookAppTheme.themeData,
16 | home: const BookNavigationScreen(),
17 | ),
18 | );
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/projects/bookstore_app/theme/theme.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:google_fonts/google_fonts.dart';
3 |
4 | class BookAppTheme {
5 | static final _appBarTheme = AppBarTheme(
6 | color: Colors.white,
7 | elevation: 0,
8 | toolbarTextStyle: GoogleFonts.workSans(
9 | color: Colors.grey[800],
10 | fontSize: 26,
11 | fontWeight: FontWeight.w600,
12 | ),
13 | );
14 |
15 | static final _textTheme = GoogleFonts.workSansTextTheme().copyWith(
16 | headline6: GoogleFonts.workSans(
17 | color: Colors.white,
18 | fontSize: 18,
19 | ),
20 | headline5: GoogleFonts.workSans(
21 | color: Colors.white,
22 | fontWeight: FontWeight.w500,
23 | fontSize: 22,
24 | ),
25 | headline4: GoogleFonts.workSans(
26 | color: Colors.white,
27 | fontWeight: FontWeight.w500,
28 | ),
29 | subtitle1: GoogleFonts.workSans(
30 | fontSize: 16,
31 | color: Colors.grey[800],
32 | fontWeight: FontWeight.w500,
33 | ),
34 | subtitle2: GoogleFonts.workSans(
35 | fontSize: 15,
36 | color: Colors.grey[400],
37 | fontWeight: FontWeight.w400,
38 | ),
39 | );
40 |
41 | static final themeData = ThemeData(
42 | scaffoldBackgroundColor: Colors.white,
43 | backgroundColor: Colors.white,
44 | primaryColor: Colors.white,
45 | textTheme: _textTheme,
46 | appBarTheme: _appBarTheme,);
47 | }
48 |
--------------------------------------------------------------------------------
/lib/projects/bookstore_app/ui/widgets/book_rate_stars.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class BookRateStars extends StatelessWidget {
4 | const BookRateStars({
5 | super.key,
6 | required this.rate,
7 | required this.heroTag,
8 | this.starsColor = Colors.yellow,
9 | this.voidStarsColor = const Color(0xFFFFDAAE),
10 | this.iconSize = 18,
11 | this.fontSize = 14,
12 | }) : assert(
13 | rate >= 0.0 && rate <= 5.0,
14 | 'The rate value must be between 0 to 5',
15 | );
16 |
17 | final double rate;
18 | final Color starsColor;
19 | final Color voidStarsColor;
20 | final double iconSize;
21 | final double fontSize;
22 | final String? heroTag;
23 |
24 | @override
25 | Widget build(BuildContext context) {
26 | final showHalfStar = rate - rate.floor() >= .4;
27 | final listStars = List.generate(
28 | rate.floor(),
29 | (index) => Hero(
30 | tag: 'star$index$heroTag',
31 | child: Icon(
32 | Icons.star_rounded,
33 | color: starsColor,
34 | size: 18,
35 | ),
36 | ),
37 | );
38 |
39 | if (showHalfStar) {
40 | listStars.add(
41 | Hero(
42 | tag: 'star${rate.floor()}$heroTag',
43 | child: Icon(
44 | Icons.star_half_rounded,
45 | color: starsColor,
46 | size: 18,
47 | ),
48 | ),
49 | );
50 | }
51 |
52 | listStars.addAll(
53 | List.generate(5 - rate.floor() - (showHalfStar ? 1 : 0), (index) {
54 | return Hero(
55 | tag: 'star${rate.ceil() + index}$heroTag',
56 | child: Icon(
57 | Icons.star_rounded,
58 | color: voidStarsColor,
59 | size: 18,
60 | ),
61 | );
62 | }),
63 | );
64 |
65 | return Row(
66 | children: listStars
67 | ..add(
68 | Hero(
69 | tag: 'rate$heroTag',
70 | child: Material(
71 | color: Colors.transparent,
72 | child: Text(
73 | ' $rate',
74 | style: TextStyle(
75 | fontSize: fontSize,
76 | fontWeight: FontWeight.bold,
77 | color: starsColor,
78 | ),
79 | ),
80 | ),
81 | ),
82 | ),
83 | );
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/lib/projects/bookstore_app/ui/widgets/book_readers_row.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_projects/projects/bookstore_app/models/book.dart';
5 |
6 | class ReadersRow extends StatelessWidget {
7 | const ReadersRow({
8 | super.key,
9 | required this.readers,
10 | this.avatarSize = 30,
11 | });
12 |
13 | final List? readers;
14 | final double avatarSize;
15 |
16 | @override
17 | Widget build(BuildContext context) {
18 | final hasUserExcess = readers!.length > 4;
19 |
20 | return Row(
21 | children: List.generate(hasUserExcess ? 4 : readers!.length, (index) {
22 | final user = readers![index];
23 | return Align(
24 | alignment: Alignment.centerLeft,
25 | widthFactor: .7,
26 | child: Container(
27 | height: avatarSize,
28 | width: avatarSize,
29 | decoration: BoxDecoration(
30 | shape: BoxShape.circle,
31 | border: Border.all(color: Colors.white, width: 1.5),
32 | image: DecorationImage(
33 | image: NetworkImage(user.photoUrl!),
34 | fit: BoxFit.cover,
35 | ),
36 | ),
37 | child: index == 3
38 | ? Container(
39 | height: avatarSize,
40 | width: avatarSize,
41 | clipBehavior: Clip.antiAlias,
42 | alignment: Alignment.center,
43 | decoration: BoxDecoration(
44 | color: Colors.black26,
45 | borderRadius: BorderRadius.circular(avatarSize),
46 | ),
47 | child: BackdropFilter(
48 | filter: ImageFilter.blur(sigmaY: 3, sigmaX: 3),
49 | child: Text(
50 | '${readers!.length - 3}+',
51 | textAlign: TextAlign.center,
52 | style: const TextStyle(
53 | color: Colors.white,
54 | fontSize: 12,
55 | fontWeight: FontWeight.bold,
56 | ),
57 | ),
58 | ),
59 | )
60 | : null,
61 | ),
62 | );
63 | }),
64 | );
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/lib/projects/bookstore_app/ui/widgets/cover_page_book.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class CoverPageBook extends StatelessWidget {
4 | const CoverPageBook({
5 | super.key,
6 | required this.srcImageBook,
7 | });
8 |
9 | final String? srcImageBook;
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return DecoratedBox(
14 | decoration: BoxDecoration(
15 | border: Border.all(color: Colors.white, width: 3),
16 | boxShadow: const [
17 | BoxShadow(
18 | color: Colors.black12,
19 | blurRadius: 10,
20 | offset: Offset(5, 5),
21 | )
22 | ],
23 | image:
24 | DecorationImage(image: AssetImage(srcImageBook!), fit: BoxFit.cover),
25 | ),
26 | );
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/lib/projects/bookstore_app/ui/widgets/widgets.dart:
--------------------------------------------------------------------------------
1 | export 'book_rate_stars.dart';
2 | export 'book_readers_row.dart';
3 | export 'cover_page_book.dart';
4 |
--------------------------------------------------------------------------------
/lib/projects/find_out/find_out_app.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/find_out/ui/screens/welcome_screen/welcome_screen.dart';
3 | import 'package:google_fonts/google_fonts.dart';
4 |
5 | class FindOutApp extends StatelessWidget {
6 | const FindOutApp({super.key});
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return MaterialApp(
11 | theme: ThemeData.dark().copyWith(
12 | primaryColor: const Color(0xFFFF256C),
13 | textTheme: GoogleFonts.poppinsTextTheme().apply(
14 | bodyColor: Colors.white,
15 | ),
16 | visualDensity: VisualDensity.adaptivePlatformDensity,
17 | ),
18 | home: WelcomeScreen(),
19 | );
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/projects/find_out/ui/screens/home/widgets/drop_down_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:google_fonts/google_fonts.dart';
3 |
4 | class DropDownWidget extends StatelessWidget {
5 | const DropDownWidget({
6 | super.key,
7 | required this.labels,
8 | });
9 | final List labels;
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return DropdownButton(
14 | elevation: 0,
15 | onChanged: (value) {},
16 | icon: const Icon(Icons.keyboard_arrow_down, color: Colors.white),
17 | style: GoogleFonts.poppins(
18 | color: Colors.white,
19 | fontSize: 18,
20 | fontWeight: FontWeight.w500,
21 | ),
22 | iconSize: 28,
23 | dropdownColor: Colors.black26,
24 | underline: const SizedBox(),
25 | value: labels.first,
26 | items: List.generate(labels.length, (index) {
27 | return DropdownMenuItem(
28 | value: labels[index],
29 | child: Text(labels[index]),
30 | );
31 | }),
32 | );
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/lib/projects/find_out/ui/screens/social_screen/widgets/background_shader_image.dart:
--------------------------------------------------------------------------------
1 | import 'package:cached_network_image/cached_network_image.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | class BackgroundShaderImage extends StatelessWidget {
6 | const BackgroundShaderImage({
7 | super.key,
8 | required this.imageUrl,
9 | });
10 |
11 | final String imageUrl;
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Stack(
16 | children: [
17 | CachedNetworkImage(
18 | imageUrl: imageUrl,
19 | height: double.infinity,
20 | width: double.infinity,
21 | fit: BoxFit.cover,
22 | placeholder: (context, url) => const Center(
23 | child: CupertinoActivityIndicator(radius: 40),
24 | ),
25 | ),
26 | Positioned.fill(
27 | child: DecoratedBox(
28 | decoration: BoxDecoration(
29 | gradient: LinearGradient(
30 | colors: [
31 | Colors.black12,
32 | Colors.black.withOpacity(.6),
33 | ],
34 | begin: Alignment.topCenter,
35 | end: Alignment.bottomCenter,
36 | stops: const [0.3, .7],
37 | ),
38 | ),
39 | ),
40 | )
41 | ],
42 | );
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/lib/projects/find_out/ui/screens/social_screen/widgets/custom_bottom_navigation.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class CustomBottomNavigation extends StatelessWidget {
4 | const CustomBottomNavigation({super.key});
5 |
6 | @override
7 | Widget build(BuildContext context) {
8 | final color = Colors.grey[400];
9 | return CustomPaint(
10 | painter: BottomBarPainter(),
11 | child: SizedBox(
12 | height: kToolbarHeight,
13 | child: Row(
14 | children: [
15 | Expanded(
16 | child: Icon(
17 | Icons.search,
18 | color: color,
19 | ),
20 | ),
21 | Expanded(
22 | child: Icon(
23 | Icons.notifications_none,
24 | color: color,
25 | ),
26 | ),
27 | const Spacer(),
28 | Expanded(
29 | child: Icon(
30 | Icons.favorite_border,
31 | color: color,
32 | ),
33 | ),
34 | Expanded(
35 | child: Icon(
36 | Icons.person_outline,
37 | color: color,
38 | ),
39 | ),
40 | ],
41 | ),
42 | ),
43 | );
44 | }
45 | }
46 |
47 | class BottomBarPainter extends CustomPainter {
48 | @override
49 | void paint(Canvas canvas, Size size) {
50 | final w = size.width;
51 | final h = size.height;
52 | // cambiar a lineas comentadas, para un recorte del dock fijo
53 | // final w2 = size.width * .5;
54 | final path = Path()
55 | ..lineTo(w * .32, 0)
56 | ..cubicTo(w * .42, 0, w * .4, h * .6, w * .5, h * .65)
57 | ..cubicTo(w * .6, h * .6, w * .58, 0, w * .68, 0)
58 | // ..lineTo(w2 - 55, 0)
59 | // ..cubicTo(w2 - 30, 0, w2 - 38, 35, w2, 37)
60 | // ..cubicTo(w2 + 38, 35, w2 + 30, 0, w2 + 55, 0)
61 | ..lineTo(w, 0)
62 | ..lineTo(w, h)
63 | ..lineTo(0, h);
64 |
65 | canvas
66 | ..drawShadow(path, Colors.black, 40, false)
67 | ..drawShadow(path, Colors.black, 40, false)
68 | ..drawPath(path, Paint()..color = Colors.white);
69 | }
70 |
71 | @override
72 | bool shouldRepaint(CustomPainter oldDelegate) => true;
73 | }
74 |
--------------------------------------------------------------------------------
/lib/projects/find_out/ui/screens/social_screen/widgets/widgets.dart:
--------------------------------------------------------------------------------
1 | export 'background_shader_image.dart';
2 | export 'comment_card.dart';
3 | export 'custom_bottom_navigation.dart';
4 | export 'place_information_card.dart';
5 | export 'social_screen_header.dart';
6 |
--------------------------------------------------------------------------------
/lib/projects/find_out/ui/widgets/inverted_top_border_clipper.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class InvertedTopBorderClipper extends CustomClipper {
4 | InvertedTopBorderClipper({required this.circularRadius});
5 |
6 | final double circularRadius;
7 |
8 | @override
9 | Path getClip(Size size) {
10 | final path = Path();
11 | final curveMiddlePoint = circularRadius / 3;
12 | final widthCurve = circularRadius * 1.66;
13 | path
14 | ..quadraticBezierTo(
15 | curveMiddlePoint, circularRadius, widthCurve, circularRadius,)
16 | ..lineTo(size.width - widthCurve, circularRadius)
17 | ..quadraticBezierTo(
18 | size.width - curveMiddlePoint, circularRadius, size.width, 0,)
19 | ..lineTo(size.width, size.height)
20 | ..lineTo(0, size.height);
21 | return path;
22 | }
23 |
24 | @override
25 | bool shouldReclip(CustomClipper oldClipper) => false;
26 | }
27 |
--------------------------------------------------------------------------------
/lib/projects/find_out/ui/widgets/text_input_find_out.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 |
4 | class TextInputFindOut extends StatelessWidget {
5 | const TextInputFindOut({
6 | super.key,
7 | required this.label,
8 | required this.iconData,
9 | this.textInputType,
10 | });
11 | final String label;
12 | final IconData iconData;
13 | final TextInputType? textInputType;
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | final isPassword = textInputType == TextInputType.visiblePassword;
18 | final outlineInputBorder = OutlineInputBorder(
19 | borderRadius: BorderRadius.circular(20),
20 | borderSide: BorderSide(
21 | color: Colors.grey[100]!,
22 | width: 2,
23 | ),
24 | );
25 | final hidePasswordNotifier = ValueNotifier(true);
26 | return ValueListenableBuilder(
27 | valueListenable: hidePasswordNotifier,
28 | builder: (context, value, child) {
29 | return TextField(
30 | keyboardType: textInputType,
31 | obscureText: isPassword,
32 | style: const TextStyle(color: Colors.black),
33 | decoration: InputDecoration(
34 | filled: true,
35 | fillColor: Colors.white,
36 | suffixIcon: isPassword
37 | ? IconButton(
38 | onPressed: () => hidePasswordNotifier.value =
39 | !hidePasswordNotifier.value,
40 | icon: Icon(
41 | value ? Icons.visibility : Icons.visibility_off,
42 | color: Colors.grey[700],
43 | ),
44 | )
45 | : null,
46 | enabledBorder: outlineInputBorder,
47 | hintText: label,
48 | focusedBorder: outlineInputBorder.copyWith(
49 | borderSide: const BorderSide(color: Colors.pink, width: 2),
50 | ),
51 | hintStyle: const TextStyle(color: Colors.grey),
52 | prefixIcon: Icon(iconData, color: Colors.pinkAccent, size: 18),
53 | ),
54 | );
55 | },
56 | );
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/bloc/bloc_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/instagram_redesign/bloc/instagram_bloc.dart';
3 | export 'package:flutter_projects/projects/instagram_redesign/bloc/instagram_bloc.dart';
4 |
5 | class InstagramBlocProvider extends InheritedWidget {
6 | const InstagramBlocProvider({
7 | super.key,
8 | required this.instagramBloc,
9 | required super.child,
10 | });
11 |
12 | final InstagramBloc instagramBloc;
13 |
14 | static InstagramBlocProvider? of(BuildContext context) =>
15 | context.dependOnInheritedWidgetOfExactType();
16 |
17 | @override
18 | bool updateShouldNotify(InheritedWidget oldWidget) => this != oldWidget;
19 | }
20 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/bloc/instagram_bloc.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | export 'package:flutter_projects/projects/instagram_redesign/models/ig_activity.dart';
4 | export 'package:flutter_projects/projects/instagram_redesign/models/ig_collection.dart';
5 | export 'package:flutter_projects/projects/instagram_redesign/models/ig_external_platform.dart';
6 | export 'package:flutter_projects/projects/instagram_redesign/models/ig_post.dart';
7 | export 'package:flutter_projects/projects/instagram_redesign/models/ig_user.dart';
8 | export 'package:flutter_projects/projects/instagram_redesign/models/ig_user_stories.dart';
9 | enum SettingsState { visible, hide }
10 | enum ViewState { ample, clean, old }
11 |
12 | class InstagramBloc with ChangeNotifier {
13 | SettingsState settingState = SettingsState.hide;
14 | ViewState viewState = ViewState.ample;
15 | ThemeMode themeMode = ThemeMode.light;
16 |
17 |
18 |
19 | void showSettings() {
20 | settingState = SettingsState.visible;
21 | notifyListeners();
22 | }
23 |
24 | void hideSettings() {
25 | settingState = SettingsState.hide;
26 | notifyListeners();
27 | }
28 |
29 | void changeView(ViewState state) {
30 | viewState = state;
31 | notifyListeners();
32 | }
33 |
34 | void setThemeMode(ThemeMode mode) {
35 | themeMode = mode;
36 | notifyListeners();
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/instagram_app.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/instagram_redesign/bloc/bloc_provider.dart';
3 | import 'package:flutter_projects/projects/instagram_redesign/theme/themes.dart';
4 | import 'package:flutter_projects/projects/instagram_redesign/ui/screens/navigation/instagram_navigation_screen.dart';
5 |
6 | class InstagramApp extends StatelessWidget {
7 | const InstagramApp({super.key});
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | return InstagramBlocProvider(
12 | instagramBloc: InstagramBloc(),
13 | child: const _InstagramApp(),
14 | );
15 | }
16 | }
17 |
18 | class _InstagramApp extends StatelessWidget {
19 | const _InstagramApp();
20 |
21 | @override
22 | Widget build(BuildContext context) {
23 | final instagramBloc = InstagramBlocProvider.of(context)!.instagramBloc;
24 | return AnimatedBuilder(
25 | animation: instagramBloc,
26 | builder: (context, child) {
27 | return MaterialApp(
28 | title: 'Instagram',
29 | debugShowCheckedModeBanner: false,
30 | themeMode: instagramBloc.themeMode,
31 | darkTheme: InstagramTheme.darkTheme,
32 | theme: InstagramTheme.lightTheme,
33 | home: child,
34 | );
35 | },
36 | child: const InstagramNavigationScreen(),
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/models/ig_external_platform.dart:
--------------------------------------------------------------------------------
1 | enum ExternalPlatform {
2 | discord._(
3 | name: 'Discord',
4 | haveDarkImage: false,
5 | imagePath: 'assets/img/instagram/discord.png',
6 | ),
7 | facebook._(
8 | name: 'Facebook',
9 | haveDarkImage: true,
10 | imagePath: 'assets/img/instagram/facebook.png',
11 | ),
12 | gitHub._(
13 | name: 'GitHub',
14 | haveDarkImage: true,
15 | imagePath: 'assets/img/instagram/github.png',
16 | ),
17 | twitch._(
18 | name: 'twitch',
19 | haveDarkImage: true,
20 | imagePath: 'assets/img/instagram/twitch.png',
21 | ),
22 | unsplash._(
23 | name: 'Unsplash',
24 | haveDarkImage: true,
25 | imagePath: 'assets/img/instagram/unsplash.png',
26 | ),
27 | instagram._(
28 | name: 'Unsplash',
29 | haveDarkImage: false,
30 | imagePath: 'assets/img/instagram/instagram.png',
31 | ),
32 | snapchat._(
33 | name: 'Snapchat',
34 | haveDarkImage: false,
35 | imagePath: 'assets/img/instagram/snapchat.png',
36 | ),
37 | twitter._(
38 | name: 'Twitter',
39 | haveDarkImage: true,
40 | imagePath: 'assets/img/instagram/twitter.png',
41 | ),
42 | uplabs._(
43 | name: 'Uplabs',
44 | haveDarkImage: false,
45 | imagePath: 'assets/img/instagram/uplabs.png',
46 | ),
47 | youtube._(
48 | name: 'YouTube',
49 | haveDarkImage: false,
50 | imagePath: 'assets/img/instagram/youtube.png',
51 | );
52 |
53 | const ExternalPlatform._({
54 | this.name,
55 | this.imagePath,
56 | this.haveDarkImage,
57 | });
58 |
59 | final String? name;
60 | final String? imagePath;
61 | final bool? haveDarkImage;
62 | }
63 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/models/ig_post.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_projects/projects/instagram_redesign/models/ig_user.dart';
2 |
3 | class IgPost {
4 | IgPost({
5 | this.id,
6 | this.userPost,
7 | this.comments,
8 | this.likes,
9 | this.description =
10 | 'Lorem Ipsum is simply dummy text of the printing and typesetting'
11 | ' industry. Lorem Ipsum has been the industry standard dummy'
12 | ' text ever since the 1500s, when an unknown printer took a '
13 | 'galley of type and scrambled it to make a type specimen book.',
14 | this.photos,
15 | this.isLiked,
16 | });
17 |
18 | final int? id;
19 | final IgUser? userPost;
20 | final List? comments;
21 | final String description;
22 | final int? likes;
23 | bool? isLiked;
24 | final List? photos;
25 |
26 | static final List listPosts =
27 | List.generate(IgUser.users.length, (index) {
28 | final user = IgUser.users[index];
29 | return IgPost(
30 | id: index,
31 | userPost: user,
32 | comments: List.generate(user.following!, (i) {
33 | return Comment(
34 | comment: [
35 | 'Superb!!',
36 | 'Nice photography 📷',
37 | 'Awesome!! 😎 ',
38 | 'Magnificent photo 😍',
39 | 'Wow!! Look soo amazing!! 🤩🤩🤩',
40 | 'I love your photos ❤',
41 | 'Your are incredible!! 😺👌',
42 | 'Magnificent photo 😍',
43 | ][i % 8],
44 | user: IgUser.users[i % IgUser.users.length],
45 | );
46 | }),
47 | likes: user.followers,
48 | isLiked: false,
49 | photos: List.generate(index.isEven ? 3 : 4, (i) {
50 | return user.listPhotosUrl![3 + i];
51 | }),
52 | );
53 | });
54 | }
55 |
56 | class Comment {
57 | const Comment({this.comment, this.user});
58 |
59 | final String? comment;
60 | final IgUser? user;
61 | }
62 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/models/ig_user_stories.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_projects/projects/instagram_redesign/models/ig_user.dart';
2 |
3 | class IgUserStories {
4 |
5 | const IgUserStories({
6 | required this.indexStory,
7 | required this.instagramUser,
8 | required this.listStories,
9 | });
10 |
11 | final int indexStory;
12 | final IgUser instagramUser;
13 | final List listStories;
14 |
15 |
16 | static final List listUserStories = List.generate(
17 | IgUser.users.length,
18 | (index) {
19 | final user = IgUser.users[index];
20 | return IgUserStories(
21 | indexStory: index,
22 | instagramUser: user,
23 | listStories: List.generate(3, (i) {
24 | return StoryModel(
25 | imageUrl: user.listPhotosUrl![i],
26 | isViewed: false,
27 | duration: const Duration(seconds: 3),
28 | );
29 | }),);
30 | },
31 | );
32 | }
33 |
34 | class StoryModel {
35 | StoryModel({this.imageUrl, this.isViewed, this.duration});
36 |
37 | final String? imageUrl;
38 | final Duration? duration;
39 | bool? isViewed;
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/theme/themes.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:google_fonts/google_fonts.dart';
3 |
4 | class InstagramTheme {
5 | static final kAppBarThemeLight = AppBarTheme(
6 | iconTheme: IconThemeData(color: Colors.grey.shade400),
7 | color: const Color(0xFFF2F6F9),
8 | elevation: 0,
9 | centerTitle: true,
10 | titleTextStyle: GoogleFonts.satisfy(
11 | color: Colors.black,
12 | fontSize: 30,
13 | fontWeight: FontWeight.bold,
14 | ),
15 | );
16 |
17 | static final kAppBarThemeDark = kAppBarThemeLight.copyWith(
18 | iconTheme: const IconThemeData(color: Colors.white),
19 | color: Colors.black,
20 | titleTextStyle: GoogleFonts.satisfy(
21 | color: Colors.white,
22 | fontSize: 30,
23 | fontWeight: FontWeight.bold,
24 | ),
25 | );
26 |
27 | static final darkTheme = ThemeData.dark().copyWith(
28 | scaffoldBackgroundColor: Colors.black,
29 | backgroundColor: Colors.black,
30 | colorScheme: const ColorScheme.dark(),
31 | textTheme: GoogleFonts.latoTextTheme(),
32 | appBarTheme: InstagramTheme.kAppBarThemeDark,
33 | );
34 |
35 | static final lightTheme = ThemeData(
36 | scaffoldBackgroundColor: const Color(0xFFF2F6F9),
37 | backgroundColor: Colors.grey[100],
38 | colorScheme: const ColorScheme.light(),
39 | textTheme: GoogleFonts.latoTextTheme(),
40 | appBarTheme: InstagramTheme.kAppBarThemeLight,
41 | );
42 | }
43 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/pages/activity/widgets/widgets.dart:
--------------------------------------------------------------------------------
1 | export 'activity_container.dart';
2 | export 'type_activity_toggle_button.dart';
3 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/pages/home/widgets/instagram_add_story.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_vector_icons/flutter_vector_icons.dart';
3 |
4 | class InstagramAddItem extends StatelessWidget {
5 | const InstagramAddItem({
6 | super.key,
7 | required this.itemSize,
8 | this.onTap,
9 | this.label = '',
10 | });
11 |
12 | final double itemSize;
13 | final VoidCallback? onTap;
14 | final String label;
15 |
16 | @override
17 | Widget build(BuildContext context) {
18 | return Column(
19 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
20 | children: [
21 | Container(
22 | width: itemSize,
23 | height: itemSize,
24 | decoration: BoxDecoration(
25 | color: Theme.of(context).backgroundColor,
26 | border: Border.all(
27 | color: Colors.grey[200]!,
28 | width: 3,
29 | ),
30 | borderRadius: BorderRadius.circular(itemSize * .4),
31 | ),
32 | child: const Icon(FontAwesome.plus),
33 | ),
34 | Text(
35 | label,
36 | style: const TextStyle(
37 | fontWeight: FontWeight.bold,
38 | fontSize: 15,
39 | ),
40 | )
41 | ],
42 | );
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/pages/home/widgets/instagram_stories_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/instagram_redesign/models/ig_user_stories.dart';
3 | import 'package:flutter_projects/projects/instagram_redesign/ui/widgets/ig_user_border_image.dart';
4 |
5 | class InstagramStoriesItem extends StatelessWidget {
6 | const InstagramStoriesItem({
7 | super.key,
8 | this.itemSize,
9 | required this.onTap,
10 | required this.stories,
11 | });
12 |
13 | final double? itemSize;
14 | final VoidCallback onTap;
15 | final IgUserStories stories;
16 |
17 | @override
18 | Widget build(BuildContext context) {
19 | final user = stories.instagramUser;
20 | return InkWell(
21 | onTap: onTap,
22 | splashColor: Colors.transparent,
23 | highlightColor: Colors.transparent,
24 | child: Column(
25 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
26 | children: [
27 | IgUserBorderImage(height: itemSize, imageUrl: user.photoUrl),
28 | Text(
29 | user.name!.split(' ').first,
30 | style: const TextStyle(
31 | fontWeight: FontWeight.bold,
32 | fontSize: 15,
33 | ),
34 | )
35 | ],
36 | ),
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/pages/home/widgets/widgets.dart:
--------------------------------------------------------------------------------
1 | export 'instagram_add_story.dart';
2 | export 'instagram_stories_item.dart';
3 | export 'settings_blur_card.dart';
4 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/pages/profile/widgets/profile_app_bar.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/instagram_redesign/bloc/bloc_provider.dart';
3 | import 'package:flutter_vector_icons/flutter_vector_icons.dart';
4 | import 'package:google_fonts/google_fonts.dart';
5 |
6 | class ProfileAppBar extends StatelessWidget implements PreferredSizeWidget {
7 | const ProfileAppBar({super.key});
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | const currentUser = IgUser.kevin;
12 | final instagramBloc = InstagramBlocProvider.of(context)!.instagramBloc;
13 |
14 | return AppBar(
15 | backgroundColor: Theme.of(context).colorScheme.onPrimary,
16 | leadingWidth: 80,
17 | leading: IconButton(
18 | onPressed: instagramBloc.showSettings,
19 | icon: const Icon(Feather.settings),
20 | ),
21 | title: Row(
22 | mainAxisSize: MainAxisSize.min,
23 | children: [
24 | Text(
25 | currentUser.username!,
26 | style: GoogleFonts.lato(
27 | fontSize: 16,
28 | color: Theme.of(context).appBarTheme.iconTheme!.color,
29 | ),
30 | ),
31 | const Icon(Icons.keyboard_arrow_down)
32 | ],
33 | ),
34 | actions: [
35 | IconButton(
36 | onPressed: () {},
37 | icon: const Icon(Feather.menu),
38 | )
39 | ],
40 | );
41 | }
42 |
43 | @override
44 | Size get preferredSize => const Size.fromHeight(kToolbarHeight);
45 | }
46 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/pages/profile/widgets/title_subtitle_text.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:google_fonts/google_fonts.dart';
3 |
4 | class IgTitleSubtitleText extends StatelessWidget {
5 | const IgTitleSubtitleText({
6 | super.key,
7 | required this.title,
8 | required this.subtitle,
9 | this.height = 1.5,
10 | this.crossAxisAlignment = CrossAxisAlignment.center,
11 | });
12 |
13 | final String title;
14 | final String subtitle;
15 | final double height;
16 | final CrossAxisAlignment crossAxisAlignment;
17 |
18 | @override
19 | Widget build(BuildContext context) {
20 | return Column(
21 | crossAxisAlignment: crossAxisAlignment,
22 | mainAxisSize: MainAxisSize.min,
23 | children: [
24 | Text(title,
25 | style: GoogleFonts.lato(
26 | fontWeight: FontWeight.w900,
27 | fontSize: 17,
28 | ),),
29 | Text(
30 | subtitle,
31 | style: GoogleFonts.lato(
32 | color: Theme.of(context).colorScheme.onBackground.withOpacity(.5),
33 | height: height,
34 | fontWeight: FontWeight.bold,),
35 | ),
36 | ],
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/pages/profile/widgets/widgets.dart:
--------------------------------------------------------------------------------
1 | export 'bottom_tab_view_profile.dart';
2 | export 'profile_app_bar.dart';
3 | export 'title_subtitle_text.dart';
4 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/screens/post_detail/widgets/add_comment_text_field.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/instagram_redesign/models/ig_user.dart';
3 | import 'package:flutter_projects/projects/instagram_redesign/ui/widgets/rounded_border_image.dart';
4 |
5 | class AddCommentTextField extends StatelessWidget {
6 | const AddCommentTextField({
7 | super.key,
8 | });
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return TextField(
13 | keyboardType: TextInputType.text,
14 | decoration: InputDecoration(
15 | filled: true,
16 | fillColor: Colors.grey.withOpacity(.1),
17 | border: OutlineInputBorder(
18 | borderRadius: BorderRadius.circular(40),
19 | borderSide: BorderSide.none,),
20 | prefixIcon: Padding(
21 | padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10),
22 | child: RoundedBorderImage(
23 | height: 50,
24 | imageUrl: IgUser.kevin.photoUrl,
25 | borderColor: Colors.transparent,
26 | ),
27 | ),
28 | hintText: 'Add a comment',
29 | suffixIcon: Padding(
30 | padding: const EdgeInsets.only(right: 8),
31 | child: IconButton(
32 | onPressed: () {},
33 | color: Theme.of(context).colorScheme.onBackground,
34 | icon: const Icon(Icons.send),
35 | ),
36 | ),),
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/screens/post_detail/widgets/widgets.dart:
--------------------------------------------------------------------------------
1 | export 'add_comment_text_field.dart';
2 | export 'comment_list_tile.dart';
3 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/screens/story/widgets/animated_line.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 |
4 | class AnimatedLine extends StatelessWidget {
5 | const AnimatedLine({
6 | super.key,
7 | required this.index,
8 | required this.selectedIndex,
9 | this.animationController,
10 | });
11 |
12 | final int index;
13 | final int selectedIndex;
14 | final AnimationController? animationController;
15 |
16 | @override
17 | Widget build(BuildContext context) {
18 | return ClipRRect(
19 | borderRadius: BorderRadius.circular(5),
20 | child: AnimatedBuilder(
21 | animation: animationController!,
22 | builder: (context, _) {
23 | return LinearProgressIndicator(
24 | value: index < selectedIndex
25 | ? 1.0
26 | : index == selectedIndex
27 | ? animationController!.value
28 | : 0.0,
29 | minHeight: 4,
30 | backgroundColor: Colors.white54,
31 | valueColor: const AlwaysStoppedAnimation(Colors.white),
32 | );
33 | },),
34 | );
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/screens/story/widgets/icon_blur_button.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | import 'package:flutter/material.dart';
4 |
5 | class IconBlurButton extends StatelessWidget {
6 | const IconBlurButton({
7 | super.key,
8 | required this.onTap,
9 | required this.iconData,
10 | this.size,
11 | });
12 |
13 | final VoidCallback onTap;
14 | final IconData iconData;
15 | final double? size;
16 |
17 | @override
18 | Widget build(BuildContext context) {
19 | return Container(
20 | height: size ?? 35,
21 | width: size ?? 35,
22 | clipBehavior: Clip.antiAlias,
23 | decoration: BoxDecoration(
24 | color: Colors.black26,
25 | borderRadius: BorderRadius.circular((size ?? 35) * .4),
26 | ),
27 | child: BackdropFilter(
28 | filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
29 | child: IconButton(
30 | padding: EdgeInsets.zero,
31 | color: Colors.white,
32 | icon: Icon(iconData),
33 | onPressed: onTap,
34 | ),
35 | ),
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/screens/story/widgets/send_message_text_field.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class SendMessageTextField extends StatelessWidget {
4 | const SendMessageTextField({
5 | super.key,
6 | });
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return TextField(
11 | keyboardType: TextInputType.text,
12 | decoration: InputDecoration(
13 | filled: true,
14 | contentPadding: const EdgeInsets.all(20),
15 | fillColor: Colors.black38,
16 | border: OutlineInputBorder(
17 | borderRadius: BorderRadius.circular(40),
18 | borderSide: BorderSide.none,
19 | ),
20 | hintText: 'Send message',
21 | hintStyle: const TextStyle(color: Colors.white),
22 | suffixIcon: const Padding(
23 | padding: EdgeInsets.only(right: 20),
24 | child: Text(
25 | '| 😍',
26 | style: TextStyle(
27 | fontSize: 22,
28 | height: 1.8,
29 | color: Colors.white70,
30 | ),
31 | ),
32 | ),
33 | ),
34 | );
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/screens/story/widgets/widgets.dart:
--------------------------------------------------------------------------------
1 | export 'animated_line.dart';
2 | export 'icon_blur_button.dart';
3 | export 'send_message_text_field.dart';
4 | export 'widgets.dart';
5 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/widgets/ig_user_border_image.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/instagram_redesign/ui/widgets/rounded_border_image.dart';
3 |
4 | class IgUserBorderImage extends StatelessWidget {
5 | const IgUserBorderImage({
6 | super.key,
7 | required this.height,
8 | required this.imageUrl,
9 | });
10 |
11 | final double? height;
12 | final String? imageUrl;
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return Container(
17 | width: height,
18 | height: height,
19 | padding: const EdgeInsets.all(2),
20 | decoration: BoxDecoration(
21 | gradient: const LinearGradient(
22 | colors: [
23 | Colors.purpleAccent,
24 | Colors.orangeAccent,
25 | ],
26 | begin: Alignment.topCenter,
27 | end: Alignment.bottomCenter,
28 | ),
29 | borderRadius: BorderRadius.circular(height! * .42),
30 | ),
31 | child: RoundedBorderImage(
32 | height: height,
33 | imageUrl: imageUrl,
34 | borderWidth: 2,
35 | ),
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/widgets/like_button.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | import 'package:flutter/material.dart';
4 | import 'package:google_fonts/google_fonts.dart';
5 |
6 | class LikeButton extends StatelessWidget {
7 | const LikeButton({
8 | super.key,
9 | required this.likes,
10 | required this.isLiked,
11 | required this.onTap,
12 | this.textColor = Colors.white,
13 | this.backgroundColor,
14 | });
15 |
16 | final int? likes;
17 | final bool? isLiked;
18 | final Color textColor;
19 | final VoidCallback onTap;
20 | final Color? backgroundColor;
21 |
22 | @override
23 | Widget build(BuildContext context) {
24 | return ClipRRect(
25 | borderRadius: BorderRadius.circular(30),
26 | child: InkWell(
27 | onTap: onTap,
28 | splashColor: Colors.transparent,
29 | highlightColor: Colors.transparent,
30 | child: BackdropFilter(
31 | filter: ImageFilter.blur(sigmaX: 4, sigmaY: 10),
32 | child: AnimatedContainer(
33 | duration: kThemeAnimationDuration,
34 | height: 45,
35 | color: isLiked!
36 | ? Colors.redAccent[400]
37 | : backgroundColor ?? Colors.white12,
38 | padding: const EdgeInsets.symmetric(horizontal: 15),
39 | child: Row(
40 | children: [
41 | Icon(
42 | Icons.favorite,
43 | color: isLiked! ? Colors.white : textColor,
44 | ),
45 | const SizedBox(width: 5),
46 | Text(
47 | _getFormatLikes(),
48 | style: GoogleFonts.lato(
49 | fontWeight: FontWeight.w900,
50 | color: isLiked! ? Colors.white : textColor,
51 | ),
52 | )
53 | ],
54 | ),
55 | ),
56 | ),
57 | ),
58 | );
59 | }
60 |
61 | String _getFormatLikes() {
62 | if (likes! >= 1000) {
63 | final textLikes = (likes! / 1000).toString().split('.');
64 | return "${textLikes.first} , ${textLikes.last.split('').first} 'K'";
65 | }
66 | return '$likes';
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/widgets/page_indicators.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class PageIndicators extends StatelessWidget {
4 | const PageIndicators({
5 | super.key,
6 | required this.currentIndex,
7 | required this.numberIndicators,
8 | });
9 |
10 | final int currentIndex;
11 | final int numberIndicators;
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Row(
16 | children: List.generate(numberIndicators, (index) {
17 | return AnimatedContainer(
18 | duration: kThemeAnimationDuration,
19 | margin: const EdgeInsets.symmetric(horizontal: 4),
20 | width: index == currentIndex ? 24 : 8,
21 | height: 6,
22 | decoration: BoxDecoration(
23 | color: index == currentIndex ? Colors.white : Colors.white60,
24 | borderRadius: BorderRadius.circular(8),
25 | ),
26 | );
27 | }),
28 | );
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/widgets/post_buttons.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/instagram_redesign/models/ig_post.dart';
3 | import 'package:flutter_projects/projects/instagram_redesign/ui/widgets/like_button.dart';
4 | import 'package:flutter_vector_icons/flutter_vector_icons.dart';
5 | import 'package:google_fonts/google_fonts.dart';
6 |
7 | class PostButtons extends StatelessWidget {
8 | const PostButtons({
9 | super.key,
10 | required this.post,
11 | required this.onTapLike,
12 | this.colorItems = Colors.white,
13 | this.likeBackgroundColor,
14 | });
15 |
16 | final IgPost post;
17 | final Color colorItems;
18 | final VoidCallback onTapLike;
19 | final Color? likeBackgroundColor;
20 |
21 |
22 | @override
23 | Widget build(BuildContext context) {
24 | return Row(
25 | children: [
26 | LikeButton(
27 | likes: post.likes,
28 | isLiked: post.isLiked,
29 | onTap: onTapLike,
30 | backgroundColor: likeBackgroundColor,
31 | textColor: colorItems,
32 | ),
33 | const SizedBox(width: 20),
34 | Icon(FontAwesome5Solid.comment_dots, color: colorItems),
35 | const SizedBox(width: 5),
36 | Text(
37 | post.comments!.length.toString(),
38 | style: GoogleFonts.lato(
39 | color: colorItems,
40 | fontWeight: FontWeight.w900,
41 | ),
42 | ),
43 | const SizedBox(width: 20),
44 | Icon(FontAwesome.send, color: colorItems),
45 | const Spacer(),
46 | Icon(FontAwesome.bookmark_o, color: colorItems),
47 | ],
48 | );
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/widgets/red_dot.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 |
4 | class RedDot extends StatelessWidget {
5 | const RedDot({
6 | super.key,
7 | });
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | return Container(
12 | height: 10,
13 | width: 10,
14 | decoration: BoxDecoration(
15 | color: Colors.redAccent,
16 | boxShadow: [BoxShadow(color: Colors.redAccent.shade100, blurRadius: 5)],
17 | shape: BoxShape.circle,
18 | ),
19 | );
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/widgets/rounded_border_image.dart:
--------------------------------------------------------------------------------
1 | import 'package:cached_network_image/cached_network_image.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class RoundedBorderImage extends StatelessWidget {
5 | const RoundedBorderImage({
6 | super.key,
7 | required this.imageUrl,
8 | required this.height,
9 | this.borderColor,
10 | this.borderWidth = 3.0,
11 | this.borderRadius,
12 | });
13 |
14 | final String? imageUrl;
15 | final double? height;
16 | final Color? borderColor;
17 | final double borderWidth;
18 | final double? borderRadius;
19 |
20 | @override
21 | Widget build(BuildContext context) {
22 | return Container(
23 | height: height,
24 | width: height,
25 | decoration: BoxDecoration(
26 | color: Colors.white,
27 | border: Border.all(
28 | color: borderColor ?? Theme.of(context).backgroundColor,
29 | width: borderWidth,
30 | ),
31 | borderRadius: BorderRadius.circular(borderRadius ?? height! * .4),
32 | image: DecorationImage(
33 | image: CachedNetworkImageProvider(imageUrl!),
34 | fit: BoxFit.cover,
35 | ),
36 | ),
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/widgets/rounded_navigation_bar.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/instagram_redesign/ui/widgets/red_dot.dart';
3 |
4 | class RoundedNavigationBar extends StatelessWidget {
5 | const RoundedNavigationBar({
6 | super.key,
7 | required this.items,
8 | this.onTap,
9 | this.unselectedColor = const Color(0xffa9a9a9),
10 | this.selectedColor = const Color(0xff000000),
11 | this.currentIndex = 0,
12 | });
13 |
14 | final List items;
15 | final ValueChanged? onTap;
16 | final Color unselectedColor;
17 | final Color selectedColor;
18 | final int currentIndex;
19 |
20 | @override
21 | Widget build(BuildContext context) {
22 | return Container(
23 | height: kToolbarHeight + MediaQuery.of(context).padding.bottom,
24 | padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 10),
25 | decoration: BoxDecoration(
26 | color: Theme.of(context).colorScheme.onPrimary,
27 | borderRadius: const BorderRadius.vertical(top: Radius.circular(50)),
28 | ),
29 | child: Row(
30 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
31 | crossAxisAlignment: CrossAxisAlignment.start,
32 | children: List.generate(items.length, (index) {
33 | final item = items[index];
34 | return IconButton(
35 | onPressed: () => onTap?.call(index),
36 | color: index == currentIndex ? selectedColor : unselectedColor,
37 | icon: Stack(
38 | alignment: const Alignment(1, .5),
39 | children: [
40 | Icon(
41 | index == currentIndex
42 | ? item.selectedIconData ?? item.iconData
43 | : item.iconData,
44 | ),
45 | if (item.hasNotification) const RedDot()
46 | ],
47 | ),
48 | );
49 | }),
50 | ),
51 | );
52 | }
53 | }
54 |
55 | class RoundedNavigationBarItem {
56 | const RoundedNavigationBarItem({
57 | required this.iconData,
58 | required this.hasNotification,
59 | this.selectedIconData,
60 | });
61 |
62 | final IconData iconData;
63 | final bool hasNotification;
64 | final IconData? selectedIconData;
65 | }
66 |
--------------------------------------------------------------------------------
/lib/projects/instagram_redesign/ui/widgets/widgets.dart:
--------------------------------------------------------------------------------
1 | export 'ample_post_card.dart';
2 | export 'clean_post_card.dart';
3 | export 'footer_post.dart';
4 | export 'ig_user_border_image.dart';
5 | export 'like_button.dart';
6 | export 'page_indicators.dart';
7 | export 'post_buttons.dart';
8 | export 'red_dot.dart';
9 | export 'rounded_border_image.dart';
10 | export 'rounded_navigation_bar.dart';
11 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/models/md_address.dart:
--------------------------------------------------------------------------------
1 | class MdAddress {
2 | const MdAddress({
3 | this.state,
4 | this.city,
5 | this.street,
6 | this.numberStreet,
7 | this.postalCode,
8 | });
9 |
10 | final String? city;
11 | final String? state;
12 | final String? street;
13 | final String? numberStreet;
14 | final String? postalCode;
15 |
16 | String getLongAddress() {
17 | return '$numberStreet $street, $city $postalCode';
18 | }
19 |
20 | static const sanFransisco = MdAddress(
21 | state: 'California',
22 | city: 'San Fransisco, CA',
23 | numberStreet: '1000',
24 | street: 'Commercial Street',
25 | postalCode: '94016',
26 | );
27 | static const springfield = MdAddress(
28 | state: 'Ohio',
29 | city: 'Springfield, OH',
30 | street: 'High Street',
31 | numberStreet: '501',
32 | postalCode: '45506',
33 | );
34 | static const rothschild = MdAddress(
35 | state: 'Wisconsin',
36 | city: 'Rothschild, WI',
37 | street: 'Imperial Ave',
38 | numberStreet: '501',
39 | postalCode: '54474',
40 | );
41 | static const midwestCity = MdAddress(
42 | state: 'Oklahoma',
43 | city: 'Midwest City, OK',
44 | street: 'National Ave',
45 | numberStreet: '8121',
46 | postalCode: '73110',
47 | );
48 | static const socorro = MdAddress(
49 | state: 'Nuevo Mexico',
50 | city: 'Socorro, NM',
51 | street: 'National Ave',
52 | numberStreet: '1202',
53 | postalCode: '87801',
54 | );
55 | static const brownwood = MdAddress(
56 | state: 'Texas',
57 | city: 'Brownwood, TX',
58 | street: 'Burnett Rd',
59 | numberStreet: '1501',
60 | postalCode: '76801',
61 | );
62 | }
63 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/models/md_appointment.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_projects/projects/medical_appointment/models/md_doctor.dart';
2 | import 'package:flutter_projects/projects/medical_appointment/models/md_indication.dart';
3 |
4 | class MedicalAppointment {
5 | MedicalAppointment({
6 | this.title,
7 | this.date,
8 | this.doctor,
9 | this.medicalIndications,
10 | });
11 |
12 | final String? title;
13 | DateTime? date;
14 | final Doctor? doctor;
15 | final List? medicalIndications;
16 |
17 | static final _listIndications = [
18 | MedicalIndication.kDrinkWater,
19 | MedicalIndication.kEatVegetables,
20 | MedicalIndication.kExercise,
21 | MedicalIndication.kNoCoffee,
22 | MedicalIndication.kNoDrinkAlcohol,
23 | MedicalIndication.kNoEatFastFood,
24 | ];
25 |
26 | static final nextAppointment = MedicalAppointment(
27 | title: 'Heart care',
28 | date: DateTime.now().add(const Duration(days: 30)),
29 | doctor: Doctor.drRichard,
30 | medicalIndications: _listIndications,
31 | );
32 |
33 | static final skinCareAppointment = MedicalAppointment(
34 | title: 'Skin care',
35 | date: DateTime.now().subtract(const Duration(days: 10)),
36 | doctor: Doctor.drLiliana,
37 | medicalIndications: _listIndications,
38 | );
39 |
40 | static final sutureAppointment = MedicalAppointment(
41 | title: 'Suture revision',
42 | date: DateTime.now().subtract(const Duration(days: 30)),
43 | doctor: Doctor.drEdward,
44 | medicalIndications: _listIndications,
45 | );
46 |
47 | static final childAppointment = MedicalAppointment(
48 | title: 'Kid Vaccine',
49 | date: DateTime.now().subtract(const Duration(days: 50)),
50 | doctor: Doctor.drJulissa,
51 | medicalIndications: _listIndications,
52 | );
53 |
54 | static final listAppointment = [
55 | skinCareAppointment,
56 | sutureAppointment,
57 | childAppointment,
58 | ];
59 | }
60 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/models/md_check.dart:
--------------------------------------------------------------------------------
1 | enum TypeCheck {
2 | weight,
3 | hemoglobin,
4 | bloodPressure,
5 | electrocardiogram,
6 | cholesterol,
7 | glucose,
8 | height
9 | }
10 |
11 | enum MedicalState { normal, alert, danger }
12 |
13 | class MedicalCheck {
14 | const MedicalCheck({this.check, this.value});
15 |
16 | final TypeCheck? check;
17 | final double? value;
18 |
19 | String? getSvgPath() {
20 | return {
21 | TypeCheck.glucose: 'assets/svg/medical/mc-glucose.svg',
22 | TypeCheck.weight: 'assets/svg/medical/mc-weight.svg',
23 | TypeCheck.hemoglobin: 'assets/svg/medical/mc-hemoglobin.svg',
24 | TypeCheck.bloodPressure: 'assets/svg/medical/mc-blood-pressure.svg',
25 | TypeCheck.electrocardiogram: 'assets/svg/medical/mc-cardiogram.svg',
26 | TypeCheck.cholesterol: 'assets/svg/medical/mc-cholesterol.svg',
27 | TypeCheck.height: 'assets/svg/medical/mc-height.svg',
28 | }[check!];
29 | }
30 |
31 | String? getMeasure() {
32 | return {
33 | TypeCheck.glucose: 'g/dL',
34 | TypeCheck.weight: 'kg',
35 | TypeCheck.hemoglobin: 'g/dL',
36 | TypeCheck.bloodPressure: 'mmHg',
37 | TypeCheck.electrocardiogram: 'hz',
38 | TypeCheck.cholesterol: 'mg/dL',
39 | TypeCheck.height: 'cm'
40 | }[check!];
41 | }
42 |
43 | MedicalState getMedicalState() {
44 | switch (check!) {
45 | case TypeCheck.weight:
46 | return MedicalState.alert;
47 | case TypeCheck.glucose:
48 | return MedicalState.normal;
49 | case TypeCheck.hemoglobin:
50 | return MedicalState.alert;
51 | case TypeCheck.bloodPressure:
52 | return MedicalState.normal;
53 | case TypeCheck.electrocardiogram:
54 | return MedicalState.normal;
55 | case TypeCheck.cholesterol:
56 | return MedicalState.danger;
57 | case TypeCheck.height:
58 | return MedicalState.normal;
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/models/md_doctor_category.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart' show IconData;
2 | import 'package:flutter_projects/projects/medical_appointment/utils/md_icons_icons.dart';
3 | import 'package:flutter_vector_icons/flutter_vector_icons.dart';
4 |
5 | enum DoctorCategory {
6 | kCardiologist._(
7 | nameCategory: 'Cardiologist',
8 | doctors: 9,
9 | iconData: FontAwesome.heartbeat,
10 | specialists: 10,
11 | rawColor: 0xffFF565D,
12 | ),
13 | kPediatrician._(
14 | nameCategory: 'Pediatrician',
15 | doctors: 9,
16 | iconData: MdIcons.pediatrician,
17 | specialists: 10,
18 | rawColor: 0xffFCD94A,
19 | ),
20 | kSurgeon._(
21 | nameCategory: 'Surgeon',
22 | iconData: MdIcons.surgeon,
23 | doctors: 9,
24 | specialists: 10,
25 | rawColor: 0xff1BCAB2,
26 | ),
27 | kUrologist._(
28 | nameCategory: 'Urologist',
29 | doctors: 9,
30 | iconData: MdIcons.prostate,
31 | specialists: 10,
32 | rawColor: 0xff33b5e5,
33 | ),
34 | kAllergist._(
35 | nameCategory: 'Allergist',
36 | doctors: 9,
37 | iconData: MdIcons.runny_nose,
38 | rawColor: 0xffFFaf00,
39 | specialists: 10,
40 | ),
41 | kDermatologist._(
42 | nameCategory: 'Dermatologist',
43 | iconData: MdIcons.skin,
44 | doctors: 9,
45 | rawColor: 0xffff6ad3,
46 | specialists: 10,
47 | ),
48 | kOphthalmologist._(
49 | nameCategory: 'Ophthalmologist',
50 | doctors: 9,
51 | iconData: MdIcons.eye,
52 | rawColor: 0xff28EB62,
53 | specialists: 10,
54 | ),
55 | kEndocrinologist._(
56 | nameCategory: 'Endocrinologist',
57 | doctors: 9,
58 | iconData: MdIcons.kidneys,
59 | rawColor: 0xff993299,
60 | specialists: 10,
61 | );
62 |
63 | const DoctorCategory._({
64 | this.iconData,
65 | this.nameCategory,
66 | this.specialists,
67 | this.doctors,
68 | this.rawColor,
69 | });
70 |
71 | final String? nameCategory;
72 | final int? specialists;
73 | final int? doctors;
74 | final int? rawColor;
75 | final IconData? iconData;
76 |
77 | static const categories = [
78 | kCardiologist,
79 | kPediatrician,
80 | kSurgeon,
81 | kUrologist,
82 | kAllergist,
83 | kDermatologist,
84 | kOphthalmologist,
85 | kEndocrinologist,
86 | ];
87 | }
88 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/models/md_indication.dart:
--------------------------------------------------------------------------------
1 | enum MedicalIndication {
2 | kNoDrinkAlcohol._(
3 | title: "No alcohol",
4 | description: "Don't drinking alcohol",
5 | svgIconPath: 'assets/svg/medical/mi-no-drinking.svg',
6 | ),
7 | kDrinkWater._(
8 | title: 'Drink water',
9 | description: 'Drink a lot of water',
10 | svgIconPath: 'assets/svg/medical/mi-drink-water.svg',
11 | ),
12 | kNoEatFastFood._(
13 | title: "No fast food",
14 | description: "Don't eat fast food",
15 | svgIconPath: 'assets/svg/medical/mi-no-fast-food.svg',
16 | ),
17 | kEatVegetables._(
18 | title: 'Eat diet',
19 | description: 'Eat more vegetables',
20 | svgIconPath: 'assets/svg/medical/mi-eat-vegatables.svg',
21 | ),
22 | kNoCoffee._(
23 | title: "No coffee",
24 | description: "Don't consume caffeine",
25 | svgIconPath: 'assets/svg/medical/mi-no-coffee.svg',
26 | ),
27 | kExercise._(
28 | title: 'Exercise',
29 | description: 'Make more exercise',
30 | svgIconPath: 'assets/svg/medical/mi-make-exercise.svg',
31 | );
32 |
33 | const MedicalIndication._({this.svgIconPath, this.description, this.title});
34 |
35 | final String? title;
36 | final String? svgIconPath;
37 | final String? description;
38 | }
39 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/models/md_patient.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_projects/projects/medical_appointment/models/md_appointment.dart';
2 | import 'package:flutter_projects/projects/medical_appointment/models/md_check.dart';
3 | export 'md_appointment.dart';
4 | export 'md_check.dart';
5 |
6 | class MedicalPatient {
7 | const MedicalPatient({
8 | this.name,
9 | this.lastName,
10 | this.email,
11 | this.photoUrl,
12 | this.phone,
13 | this.medicalChecks,
14 | this.appointmentHistory,
15 | this.nextAppointment,
16 | });
17 |
18 | final String? name;
19 | final String? lastName;
20 | final String? email;
21 | final String? photoUrl;
22 | final String? phone;
23 | final List? medicalChecks;
24 | final List? appointmentHistory;
25 | final MedicalAppointment? nextAppointment;
26 |
27 | static final currentPatient = MedicalPatient(
28 | name: 'Kevin',
29 | lastName: 'Melendez',
30 | email: 'kevinmdezhdez@gmail.com',
31 | photoUrl:
32 | 'https://images.unsplash.com/photo-1480455624313-e29b44bbfde1?ixlib=rb-1.2.1&ixid=MXwxMjA3fDB8MHxzZWFyY2h8MjF8fG1lbnxlbnwwfHwwfA%3D%3D&auto=format&fit=crop&w=500&q=60',
33 | appointmentHistory: MedicalAppointment.listAppointment,
34 | nextAppointment: MedicalAppointment.nextAppointment,
35 | phone: '+52741137588',
36 | medicalChecks: const [
37 | MedicalCheck(check: TypeCheck.weight, value: 149.7),
38 | MedicalCheck(check: TypeCheck.height, value: 170.7),
39 | MedicalCheck(check: TypeCheck.cholesterol, value: 200),
40 | MedicalCheck(check: TypeCheck.electrocardiogram, value: 60),
41 | MedicalCheck(check: TypeCheck.bloodPressure, value: 0.87),
42 | MedicalCheck(check: TypeCheck.hemoglobin, value: 120),
43 | MedicalCheck(check: TypeCheck.glucose, value: 89),
44 | ],
45 | );
46 | }
47 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/models/medical_check_item.dart:
--------------------------------------------------------------------------------
1 | enum MedicalState { danger, normal, alert }
2 |
3 | class MedicalCheckItem {
4 | const MedicalCheckItem({this.title, this.info, this.pathImage, this.state});
5 |
6 | final String? title;
7 | final String? info;
8 | final String? pathImage;
9 | final MedicalState? state;
10 |
11 | static const listItemCheck = [
12 | MedicalCheckItem(
13 | title: 'Weight & Height',
14 | info: '149.7 lb - 172 cm',
15 | pathImage: 'assets/img/medical/weight.png',
16 | state: MedicalState.normal,),
17 | MedicalCheckItem(
18 | title: 'Blood pressure',
19 | info: '130/90 mm',
20 | pathImage: 'assets/img/medical/arm.png',
21 | state: MedicalState.alert,),
22 | MedicalCheckItem(
23 | title: 'Cholesterol',
24 | info: '200 mg/dl',
25 | pathImage: 'assets/img/medical/cholesterol.png',
26 | state: MedicalState.alert,),
27 | MedicalCheckItem(
28 | title: 'Glucose',
29 | info: '200 mg/dl',
30 | pathImage: 'assets/img/medical/diabetes-test.png',
31 | state: MedicalState.danger,
32 | ),
33 | MedicalCheckItem(
34 | title: 'Lung health',
35 | info: '90 %',
36 | pathImage: 'assets/img/medical/lungs.png',
37 | state: MedicalState.normal,
38 | ),
39 | MedicalCheckItem(
40 | title: 'Stress',
41 | info: '40 %',
42 | pathImage: 'assets/img/medical/brain.png',
43 | state: MedicalState.alert,
44 | ),
45 | ];
46 | }
47 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/ui/doctors/doctors_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/medical_appointment/utils/md_app_colors.dart';
3 |
4 | class DoctorsPage extends StatelessWidget {
5 | const DoctorsPage({super.key});
6 |
7 | @override
8 | Widget build(BuildContext context) {
9 | return Scaffold(
10 | body: Column(
11 | children: [
12 | Container(
13 | height: 200,
14 | width: double.infinity,
15 | padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
16 | decoration: const BoxDecoration(
17 | gradient: LinearGradient(
18 | colors: [MdAppColors.kBlue, MdAppColors.kDarkBlue],
19 | end: Alignment.bottomCenter,
20 | begin: Alignment.topCenter,
21 | ),
22 | ),
23 | child: SafeArea(
24 | child: Column(
25 | children: [
26 | Row(
27 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
28 | children: [
29 | Column(
30 | crossAxisAlignment: CrossAxisAlignment.start,
31 | mainAxisSize: MainAxisSize.min,
32 | children: const [
33 | Text(
34 | 'Find your doctor',
35 | style: TextStyle(
36 | color: Colors.white,
37 | fontWeight: FontWeight.bold,
38 | fontSize: 22,
39 | ),
40 | ),
41 | Text(
42 | 'The best doctors catalog',
43 | style:
44 | TextStyle(color: Colors.white70, fontSize: 16),
45 | ),
46 | ],
47 | ),
48 | const Icon(
49 | Icons.search,
50 | color: Colors.white,
51 | size: 50,
52 | )
53 | ],
54 | ),
55 | ],
56 | ),
57 | ),
58 | )
59 | ],
60 | ),
61 | );
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/ui/home/painters/tongue_painter.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/medical_appointment/utils/md_app_colors.dart';
3 |
4 | class TonguePainter extends CustomPainter {
5 | TonguePainter({required this.curveRadius});
6 | final double curveRadius;
7 |
8 | @override
9 | void paint(Canvas canvas, Size size) {
10 | final paint = Paint()
11 | ..shader = const LinearGradient(
12 | colors: [MdAppColors.kBlue, MdAppColors.kDarkBlue],
13 | begin: Alignment.topCenter,
14 | end: Alignment.bottomCenter,
15 | ).createShader(
16 | Rect.fromCenter(
17 | center: Offset(0, size.height * .6),
18 | width: size.width,
19 | height: size.height,
20 | ),
21 | );
22 |
23 | final path = Path()
24 | ..lineTo(0, size.height)
25 | ..quadraticBezierTo(
26 | 0,
27 | size.height - curveRadius,
28 | curveRadius,
29 | size.height - curveRadius,
30 | )
31 | ..lineTo(size.width * .3, size.height - curveRadius)
32 | ..cubicTo(
33 | size.width * .42,
34 | size.height - curveRadius,
35 | size.width * .41,
36 | size.height,
37 | size.width * .5,
38 | size.height,
39 | )
40 | ..cubicTo(
41 | size.width * .59,
42 | size.height,
43 | size.width * .59,
44 | size.height - curveRadius,
45 | size.width * .7,
46 | size.height - curveRadius,
47 | )
48 | ..lineTo(size.width - curveRadius, size.height - curveRadius)
49 | ..quadraticBezierTo(
50 | size.width,
51 | size.height - curveRadius,
52 | size.width,
53 | size.height,
54 | )
55 | ..lineTo(size.width, 0)
56 | ..lineTo(0, 0);
57 | canvas
58 | ..drawShadow(path, Colors.black26, 10, false)
59 | ..drawPath(path, paint);
60 | }
61 |
62 | @override
63 | bool shouldRepaint(CustomPainter oldDelegate) => false;
64 | }
65 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/ui/home/widgets/home_widgets.dart:
--------------------------------------------------------------------------------
1 | export 'package:flutter_projects/projects/medical_appointment/ui/home/painters/tongue_painter.dart';
2 | export 'package:flutter_projects/projects/medical_appointment/ui/home/widgets/appointment_details.dart';
3 | export 'package:flutter_projects/projects/medical_appointment/ui/home/widgets/category_card.dart';
4 | export 'package:flutter_projects/projects/medical_appointment/ui/home/widgets/medical_check_card.dart';
5 | export 'package:flutter_projects/projects/medical_appointment/ui/home/widgets/next_appointment_card.dart';
6 | export 'package:flutter_projects/projects/medical_appointment/ui/home/widgets/search_app_bar.dart';
7 | export 'package:flutter_projects/projects/medical_appointment/ui/home/widgets/top_doctors_card.dart';
8 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/ui/home/widgets/search_app_bar.dart:
--------------------------------------------------------------------------------
1 | import 'package:cached_network_image/cached_network_image.dart';
2 | import 'package:flutter/material.dart';
3 | import 'package:flutter_projects/projects/medical_appointment/models/md_patient.dart';
4 |
5 | class SearchAppBar extends StatelessWidget {
6 | const SearchAppBar({
7 | super.key,
8 | });
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | const height = 45.0;
13 | return SafeArea(
14 | child: Row(
15 | children: [
16 | Expanded(
17 | child: SizedBox(
18 | height: height,
19 | child: TextField(
20 | keyboardType: TextInputType.text,
21 | decoration: InputDecoration(
22 | filled: true,
23 | fillColor: Colors.white38,
24 | contentPadding: const EdgeInsets.symmetric(horizontal: 20),
25 | suffixIcon: const Icon(Icons.search, color: Colors.white70),
26 | border: OutlineInputBorder(
27 | borderRadius: BorderRadius.circular(30),
28 | borderSide: BorderSide.none,),
29 | hintStyle: const TextStyle(
30 | color: Colors.white70,
31 | fontWeight: FontWeight.w700,
32 | fontSize: 14,),
33 | hintText: 'Search',
34 | ),
35 | ),
36 | ),
37 | ),
38 | const SizedBox(width: 10),
39 | Container(
40 | width: height,
41 | height: height,
42 | padding: const EdgeInsets.all(2),
43 | decoration: BoxDecoration(
44 | border: Border.all(color: Colors.white, width: 2),
45 | shape: BoxShape.circle,
46 | color: Colors.white,
47 | image: DecorationImage(
48 | image: CachedNetworkImageProvider(
49 | MedicalPatient.currentPatient.photoUrl!,),
50 | fit: BoxFit.cover,
51 | ),),
52 | ),
53 | ],
54 | ),
55 | );
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/utils/md_app_colors.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | class MdAppColors {
4 | static const kLightCyan = Color(0xff9ae2e6);
5 | static const kDarkTeal = Color(0xff527c88);
6 | static const kDarkBlue = Color(0xff1238a0);
7 | static const kBlue = Color(0xff1a75fe);
8 | static const kLightBlue = Color(0xff16C2D5);
9 | }
10 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/utils/md_icons_icons.dart:
--------------------------------------------------------------------------------
1 | /// Flutter icons MDIcons
2 | /// Copyright (C) 2020 by original authors @ fluttericon.com, fontello.com
3 | /// This font was generated by FlutterIcon.com, which is derived from Fontello.
4 | ///
5 | /// To use this font, place it in your fonts/ directory and include the
6 | /// following in your pubspec.yaml
7 | //
8 | ///
9 | ///
10 | import 'package:flutter/widgets.dart';
11 |
12 | class MdIcons {
13 | MdIcons._();
14 |
15 | static const _kFontFam = 'MDIcons';
16 |
17 | // ignore_for_file: constant_identifier_names
18 | static const IconData kidneys =
19 | IconData(0xe800, fontFamily: _kFontFam);
20 | static const IconData pediatrician_o =
21 | IconData(0xe802, fontFamily: _kFontFam);
22 | static const IconData dentist =
23 | IconData(0xe803, fontFamily: _kFontFam);
24 | static const IconData surgeon_o =
25 | IconData(0xe804, fontFamily: _kFontFam);
26 | static const IconData surgeon =
27 | IconData(0xe805, fontFamily: _kFontFam);
28 | static const IconData pediatrician =
29 | IconData(0xe806, fontFamily: _kFontFam);
30 | static const IconData prostate_o =
31 | IconData(0xe807, fontFamily: _kFontFam);
32 | static const IconData prostate =
33 | IconData(0xe808, fontFamily: _kFontFam);
34 | static const IconData runny_nose_o =
35 | IconData(0xe809, fontFamily: _kFontFam);
36 | static const IconData kidneys_o =
37 | IconData(0xe80a, fontFamily: _kFontFam);
38 | static const IconData skin_o =
39 | IconData(0xe80b, fontFamily: _kFontFam);
40 | static const IconData runny_nose =
41 | IconData(0xe80c, fontFamily: _kFontFam);
42 | static const IconData eye =
43 | IconData(0xe80d, fontFamily: _kFontFam);
44 | static const IconData eye_o =
45 | IconData(0xe80e, fontFamily: _kFontFam);
46 | static const IconData stethoscope =
47 | IconData(0xe80f, fontFamily: _kFontFam);
48 | static const IconData skin =
49 | IconData(0xe810, fontFamily: _kFontFam);
50 | }
51 |
--------------------------------------------------------------------------------
/lib/projects/medical_appointment/utils/md_utils.dart:
--------------------------------------------------------------------------------
1 | class MdUtils {
2 | static String formatToTextDate(DateTime date) {
3 | return '${date.year} ${months[date.month]} ${date.day}';
4 | }
5 |
6 | static String extractHourDate(DateTime date) {
7 | final auxHour = date.hour < 10 ? 0 : '';
8 | final auxMinute = date.minute < 10 ? 0 : '';
9 | return '$auxHour${date.hour}:$auxMinute${date.minute} hr';
10 | }
11 |
12 | static const months = {
13 | 1: 'January',
14 | 2: 'February',
15 | 3: 'March',
16 | 4: 'April',
17 | 5: 'May',
18 | 6: 'June',
19 | 7: 'Jule',
20 | 8: 'August',
21 | 9: 'September',
22 | 10: 'October',
23 | 11: 'November',
24 | 12: 'December',
25 | };
26 | }
27 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/constants/constants.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | const Color kAccentColor = Color(0xffFF4259);
4 | const Color kAccentSecondaryColor = Color(0xffFF6313);
5 | const Color kPrimaryColorHeavy = Color(0xff1f1f2f);
6 | const Color kPrimaryColorDark = Color(0xff303043);
7 | const Color kPrimaryColor = Color(0xff454561);
8 | const Color kPrimaryColorLight = Color(0xffa0a0bf);
9 |
10 | const kDuration400ms = Duration(milliseconds: 400);
11 |
12 | const kGradientRedOrange = LinearGradient(
13 | colors: [kAccentColor, kAccentSecondaryColor],
14 | begin: Alignment.topCenter,
15 | end: Alignment(1.8, 1),);
16 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/models/actors.dart:
--------------------------------------------------------------------------------
1 | class Actor {
2 |
3 | const Actor({
4 | this.name,
5 | this.pathImage,
6 | });
7 |
8 | final String? name;
9 | final String? pathImage;
10 |
11 | static const listActors = [
12 | Actor(name: 'Josh Mike', pathImage: 'assets/img/movie/actor1.jpg'),
13 | Actor(name: 'Antony Mendez', pathImage: 'assets/img/movie/actor2.jpg'),
14 | Actor(name: 'Katy Pearce', pathImage: 'assets/img/movie/actor3.jpg'),
15 | Actor(name: 'Gerald Fey', pathImage: 'assets/img/movie/actor4.jpg'),
16 | Actor(name: 'Gina Velasquez', pathImage: 'assets/img/movie/actor5.jpg'),
17 | ];
18 | }
19 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/models/billboard.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_projects/projects/movie_selection/models/movie.dart';
2 |
3 | class Billboard {
4 | const Billboard(this.hour, this.movieList);
5 |
6 | final String hour;
7 | final List movieList;
8 |
9 | static final billboardList = [
10 | Billboard('14:30', Movie.listMovie3),
11 | Billboard('16:15', Movie.listMovie),
12 | Billboard('18:00', Movie.listMovie2),
13 | ];
14 | }
15 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/models/seats.dart:
--------------------------------------------------------------------------------
1 | class SeatsRowData {
2 | const SeatsRowData({this.seats, this.occupiedSeats});
3 |
4 | final int? seats;
5 | final List? occupiedSeats;
6 |
7 |
8 | static const seatsList = [
9 | SeatsRowData(seats: 8, occupiedSeats: [5]),
10 | SeatsRowData(seats: 10, occupiedSeats: []),
11 | SeatsRowData(seats: 10, occupiedSeats: [6]),
12 | SeatsRowData(seats: 10, occupiedSeats: [1, 2]),
13 | SeatsRowData(seats: 12, occupiedSeats: [3, 12]),
14 | SeatsRowData(seats: 12, occupiedSeats: [11, 12]),
15 | SeatsRowData(seats: 12, occupiedSeats: []),
16 | SeatsRowData(seats: 12, occupiedSeats: [12]),
17 | ];
18 |
19 | static const firstSeatsList = [
20 | SeatsRowData(seats: 2, occupiedSeats: []),
21 | SeatsRowData(seats: 2, occupiedSeats: []),
22 | SeatsRowData(seats: 2, occupiedSeats: []),
23 | SeatsRowData(seats: 2, occupiedSeats: [1, 2]),
24 | ];
25 | }
26 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/movie_selection_app.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/movie_selection/ui/screens/home/movie_home.dart';
3 | import 'package:google_fonts/google_fonts.dart';
4 |
5 | class MovieSelectionApp extends StatelessWidget {
6 | const MovieSelectionApp({super.key});
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return MaterialApp(
11 | theme: ThemeData(
12 | textTheme: GoogleFonts.barlowCondensedTextTheme()
13 | .apply(bodyColor: Colors.white)
14 | .copyWith(
15 | bodyText2: GoogleFonts.barlowCondensed(
16 | letterSpacing: 2,
17 | color: Colors.white,
18 | ),
19 | ),
20 | ),
21 | home: MovieHome(),
22 | );
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/ui/screens/cinema_selection/widgets/hour_container.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/movie_selection/constants/constants.dart';
3 | import 'package:google_fonts/google_fonts.dart';
4 |
5 | class HourContainer extends StatelessWidget {
6 | const HourContainer({
7 | super.key,
8 | this.hour,
9 | this.id,
10 | this.selectedHourNotifier,
11 | this.onTap,
12 | });
13 | final String? hour;
14 | final ValueNotifier? selectedHourNotifier;
15 | final int? id;
16 | final VoidCallback? onTap;
17 |
18 | @override
19 | Widget build(BuildContext context) {
20 | final size = MediaQuery.of(context).size;
21 | return ValueListenableBuilder(
22 | valueListenable: selectedHourNotifier!,
23 | builder: (context, value, child) {
24 | final isSelected = value == id;
25 | return InkWell(
26 | onTap: () {
27 | selectedHourNotifier!.value = id;
28 | onTap!();
29 | },
30 | child: Container(
31 | alignment: Alignment.center,
32 | decoration: BoxDecoration(
33 | color: kPrimaryColor,
34 | gradient: isSelected ? kGradientRedOrange : null,
35 | boxShadow: const [
36 | BoxShadow(blurRadius: 20, color: Colors.black38)
37 | ],
38 | borderRadius: BorderRadius.circular(6),
39 | ),
40 | child: Column(
41 | mainAxisSize: MainAxisSize.min,
42 | children: [
43 | Text(
44 | hour!,
45 | style: GoogleFonts.barlowCondensed(
46 | fontWeight: FontWeight.w500,
47 | fontSize: size.height * .024,
48 | color: isSelected ? Colors.white : kPrimaryColorLight,
49 | ),
50 | ),
51 | Text(
52 | '60 MXN',
53 | style: GoogleFonts.barlowCondensed(
54 | fontWeight: FontWeight.w400,
55 | fontSize: size.height * .016,
56 | color: isSelected ? Colors.white : kPrimaryColorLight,
57 | ),
58 | )
59 | ],
60 | ),
61 | ),
62 | );
63 | },
64 | );
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/ui/screens/cinema_selection/widgets/hours_movie_list.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/movie_selection/models/movie.dart';
3 |
4 | import 'package:flutter_projects/projects/movie_selection/ui/screens/cinema_selection/widgets/hour_container.dart';
5 |
6 |
7 | class HoursMovieOptions extends StatelessWidget {
8 | const HoursMovieOptions({
9 | super.key,
10 | required this.listHours,
11 | required this.selectedHourNotifier,
12 | required this.movie,
13 | });
14 |
15 | final List listHours;
16 | final ValueNotifier selectedHourNotifier;
17 | final Movie? movie;
18 |
19 | @override
20 | Widget build(BuildContext context) {
21 | return GridView.count(
22 | scrollDirection: Axis.horizontal,
23 | crossAxisCount: 2,
24 | mainAxisSpacing: 20,
25 | crossAxisSpacing: 20,
26 | childAspectRatio: 2 / 4,
27 | physics: const BouncingScrollPhysics(),
28 | padding: const EdgeInsets.symmetric(horizontal: 20),
29 | children: List.generate(listHours.length, (i) {
30 | return HourContainer(
31 | hour: listHours[i],
32 | selectedHourNotifier: selectedHourNotifier,
33 | onTap: () => movie!.billboardHour = listHours[i],
34 | id: i,
35 | );
36 | }),
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/ui/screens/cinema_selection/widgets/select_cinema.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/movie_selection/constants/constants.dart';
3 | import 'package:google_fonts/google_fonts.dart';
4 |
5 | class SelectCinema extends StatelessWidget {
6 | const SelectCinema({
7 | super.key,
8 | });
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | final size = MediaQuery.of(context).size;
13 | return Container(
14 | padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 15),
15 | margin: const EdgeInsets.symmetric(horizontal: 20),
16 | width: double.infinity,
17 | decoration: BoxDecoration(
18 | color: kPrimaryColor,
19 | borderRadius: BorderRadius.circular(6),
20 | boxShadow: const [
21 | BoxShadow(
22 | color: Colors.black54,
23 | blurRadius: 30,
24 | )
25 | ],
26 | ),
27 | child: Row(
28 | children: [
29 | Column(
30 | crossAxisAlignment: CrossAxisAlignment.start,
31 | children: [
32 | Text(
33 | 'SELECT YOUR CINEMA',
34 | style: GoogleFonts.barlowCondensed(
35 | color: kPrimaryColorLight,
36 | fontSize: size.height * .018,
37 | fontWeight: FontWeight.w500,
38 | ),
39 | ),
40 | Text(
41 | 'Gulliver',
42 | style: GoogleFonts.barlowCondensed(
43 | height: 2,
44 | fontSize: size.height * .025,
45 | fontWeight: FontWeight.w600,
46 | ),
47 | ),
48 | ],
49 | ),
50 | const Spacer(),
51 | Icon(
52 | Icons.arrow_downward,
53 | color: Colors.white,
54 | size: size.height * .03,
55 | )
56 | ],
57 | ),
58 | );
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/ui/screens/detail/widgets/gradient_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/movie_selection/constants/constants.dart';
3 | import 'package:google_fonts/google_fonts.dart';
4 |
5 | class GradientButton extends StatelessWidget {
6 | const GradientButton({
7 | super.key,
8 | this.text,
9 | this.onTap,
10 | this.width,
11 | });
12 |
13 | final String? text;
14 | final double? width;
15 |
16 | final VoidCallback? onTap;
17 |
18 | @override
19 | Widget build(BuildContext context) {
20 | final size = MediaQuery.of(context).size;
21 | return InkWell(
22 | onTap: onTap,
23 | splashColor: Colors.transparent,
24 | highlightColor: Colors.transparent,
25 | borderRadius: BorderRadius.circular(8),
26 | child: Container(
27 | alignment: Alignment.center,
28 | height: size.height * .07,
29 | width: width ?? size.width,
30 | decoration: BoxDecoration(
31 | boxShadow: const [
32 | BoxShadow(
33 | color: Colors.black12,
34 | blurRadius: 20,
35 | )
36 | ],
37 | borderRadius: BorderRadius.circular(8),
38 | gradient: kGradientRedOrange,),
39 | child: Text(
40 | text!,
41 | style: GoogleFonts.barlowCondensed(
42 | fontSize: size.height * .027,
43 | fontWeight: FontWeight.w500,
44 | letterSpacing: 4,),
45 | ),
46 | ),
47 | );
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/ui/screens/detail/widgets/synopsis.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/movie_selection/constants/constants.dart';
3 | import 'package:google_fonts/google_fonts.dart';
4 |
5 | class Synopsis extends StatelessWidget {
6 | const Synopsis({super.key, this.description});
7 |
8 | final String? description;
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | final size = MediaQuery.of(context).size;
13 | return Column(
14 | crossAxisAlignment: CrossAxisAlignment.start,
15 | children: [
16 | Text(
17 | 'Synopsis',
18 | style: GoogleFonts.barlowCondensed(
19 | fontSize: size.height * .03,
20 | fontWeight: FontWeight.w400,
21 | ),
22 | ),
23 | const SizedBox(height: 10),
24 | Text(
25 | description!,
26 | textAlign: TextAlign.justify,
27 | style: GoogleFonts.barlowCondensed(
28 | fontSize: size.height * .02,
29 | height: 1.5,
30 | fontWeight: FontWeight.w400,
31 | color: kPrimaryColorLight,
32 | ),
33 | ),
34 | ],
35 | );
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/ui/screens/home/widgets/header_option.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/movie_selection/constants/constants.dart';
3 | import 'package:google_fonts/google_fonts.dart';
4 |
5 | class HeaderOption extends StatelessWidget {
6 | const HeaderOption({
7 | super.key,
8 | this.title,
9 | this.isSelected,
10 | });
11 |
12 | final String? title;
13 | final bool? isSelected;
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return Expanded(
18 | child: Container(
19 | alignment: const Alignment(0, .5),
20 | height: double.infinity,
21 | decoration: BoxDecoration(
22 | gradient: isSelected!
23 | ? kGradientRedOrange
24 | : null,
25 | ),
26 | child: Text(
27 | title!.toUpperCase(),
28 | style: GoogleFonts.barlowCondensed(
29 | fontWeight: FontWeight.w500,
30 | color: Colors.white.withOpacity(.85),
31 | letterSpacing: 2,
32 | fontSize: 28,
33 | ),
34 | ),
35 | ),
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/ui/widgets/gradient_animation_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/core/shared/ui/animations/tween_animations.dart';
3 | import 'package:flutter_projects/projects/movie_selection/constants/constants.dart';
4 | import 'package:flutter_projects/projects/movie_selection/ui/screens/detail/widgets/gradient_button.dart';
5 |
6 | class GradientAnimationButton extends StatelessWidget {
7 | const GradientAnimationButton({
8 | super.key,
9 | required this.hideWidgets,
10 | this.label,
11 | this.onPressed,
12 | });
13 |
14 | final ValueNotifier hideWidgets;
15 | final String? label;
16 | final VoidCallback? onPressed;
17 |
18 | @override
19 | Widget build(BuildContext context) {
20 | return ValueListenableBuilder(
21 | valueListenable: hideWidgets,
22 | builder: (context, value, child) {
23 | return AnimatedPositioned(
24 | curve: Curves.fastOutSlowIn,
25 | duration: kDuration400ms,
26 | bottom: value ? -150 : 20,
27 | left: 20,
28 | right: 20,
29 | child: child!,
30 | );
31 | },
32 | child: TranslateAnimation(
33 | child: ScaleAnimation(
34 | child: OpacityAnimation(
35 | child: GradientButton(
36 | onTap: () {
37 | hideWidgets.value = true;
38 | onPressed!();
39 | },
40 | text: label,
41 | ),
42 | ),
43 | ),
44 | ),
45 | );
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/ui/widgets/row_stars.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class RowStars extends StatelessWidget {
4 | const RowStars({
5 | super.key,
6 | this.stars,
7 | this.size,
8 | this.color = Colors.cyan,
9 | });
10 |
11 | final double? stars;
12 | final double? size;
13 | final Color color;
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | final colorStars = color;
18 | final fillStar = Icon(Icons.star, color: colorStars, size: size);
19 |
20 | final halfStar = Icon(Icons.star_half, color: colorStars, size: size);
21 |
22 | final voidStar =
23 | Icon(Icons.star, color: Colors.grey[300]!.withOpacity(.4), size: size);
24 |
25 | var fillStars = stars!.floor();
26 | final addHalfStar = (stars! - fillStars) >= 0.5;
27 | final listStars = List.generate(fillStars, (i) => fillStar);
28 | if (addHalfStar) {
29 | listStars.add(halfStar);
30 | fillStars++;
31 | }
32 | listStars.addAll(List.generate(10 - fillStars, (i) => voidStar));
33 | return FittedBox(
34 | child: Row(children: listStars),
35 | );
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/lib/projects/movie_selection/ui/widgets/tag_container.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/movie_selection/constants/constants.dart';
3 | import 'package:google_fonts/google_fonts.dart';
4 |
5 |
6 | class TagContainer extends StatelessWidget {
7 | const TagContainer({
8 | super.key,
9 | this.tag,
10 | this.gradient = kGradientRedOrange,
11 | });
12 | final String? tag;
13 | final Gradient gradient;
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return Container(
18 | padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 3),
19 | decoration: BoxDecoration(
20 | borderRadius: BorderRadius.circular(3), gradient: gradient,),
21 | child: Text(
22 | tag!.toUpperCase(),
23 | style: GoogleFonts.barlowCondensed(
24 | fontSize: 15,
25 | fontWeight: FontWeight.w500,
26 | ),
27 | ),
28 | );
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/lib/projects/music_album_collection/models/album_model.dart:
--------------------------------------------------------------------------------
1 | class AlbumModel {
2 | AlbumModel({
3 | required this.title,
4 | required this.author,
5 | required this.pathImage,
6 | required this.songs,
7 | });
8 |
9 | final String title;
10 | final String author;
11 | final String pathImage;
12 | final List songs;
13 |
14 | static final listAlbum = [
15 | AlbumModel(
16 | title: 'Apocalipsis Zombie',
17 | author: 'Cuarteto de nos',
18 | pathImage: 'assets/img/music/zombie.jpg',
19 | songs: ['Gaucho Power', 'Invisible', 'El rey y el as'],),
20 | AlbumModel(
21 | title: 'Jueves',
22 | author: 'Cuarteto de nos',
23 | pathImage: 'assets/img/music/jueves.jpg',
24 | songs: ['Anonimo', 'Mario Neta', 'Hombre con alas'],),
25 | AlbumModel(
26 | title: 'Habla tu espejo',
27 | author: 'Cuarteto de nos',
28 | pathImage: 'assets/img/music/espejo.jpg',
29 | songs: ['No llora', 'Roberto', 'El aprendiz'],),
30 | AlbumModel(
31 | title: 'Porfiado',
32 | author: 'Cuarteto de nos',
33 | pathImage: 'assets/img/music/porfiado.jpg',
34 | songs: ['Lo malo de ser bueno', 'Buen dia benito', 'Miguel Gritar'],),
35 | AlbumModel(
36 | title: 'Bipolar',
37 | author: 'Cuarteto de nos',
38 | pathImage: 'assets/img/music/bipolar.jpg',
39 | songs: ['El hijo de hernandez', 'Doble identidad', 'Mi lista negra'],),
40 | AlbumModel(
41 | title: 'Raro',
42 | author: 'Cuarteto de nos',
43 | pathImage: 'assets/img/music/raro.jpg',
44 | songs: [
45 | 'Hoy estoy raro',
46 | 'Me hace bien, me hace mal',
47 | 'Ya no se que hacer conmigo'
48 | ],),
49 | AlbumModel(
50 | title: 'Cortamambo',
51 | author: 'Cuarteto de nos',
52 | pathImage: 'assets/img/music/cortamanbo.jpg',
53 | songs: [
54 | 'La guerra de Gardel',
55 | 'Intentaron separarnos',
56 | 'Me amo',
57 | ],),
58 | ];
59 | }
60 |
--------------------------------------------------------------------------------
/lib/projects/music_album_collection/music_album_collection.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/music_album_collection/screens/albums/albums_screen.dart';
3 | import 'package:google_fonts/google_fonts.dart';
4 |
5 | class MusicAlbumList extends StatelessWidget {
6 | const MusicAlbumList({super.key});
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return MaterialApp(
11 | theme: ThemeData(
12 | scaffoldBackgroundColor: Colors.white,
13 | textTheme: GoogleFonts.poppinsTextTheme(),
14 | primarySwatch: Colors.grey,
15 | appBarTheme: const AppBarTheme(
16 | backgroundColor: Colors.white,
17 | elevation: 0,
18 | ),
19 | primaryColor: Colors.white,
20 | ),
21 | home: const AlbumsScreen(),
22 | );
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/projects/music_album_collection/screens/music_player/widgets/animated_player_controls.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | import 'package:flutter/material.dart';
4 |
5 | class AnimatedPlayerControls extends StatelessWidget {
6 | const AnimatedPlayerControls({
7 | super.key,
8 | required this.animation1,
9 | required this.animation2,
10 | });
11 |
12 | final Animation animation1;
13 | final Animation animation2;
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return FadeTransition(
18 | opacity: animation1,
19 | child: Padding(
20 | padding: const EdgeInsets.only(bottom: 20),
21 | child: Row(
22 | mainAxisAlignment: MainAxisAlignment.spaceAround,
23 | children: List.generate(5, (i) {
24 | final listIcons = [
25 | Icons.replay,
26 | Icons.fast_rewind,
27 | Icons.play_arrow_rounded,
28 | Icons.fast_forward,
29 | Icons.volume_up
30 | ];
31 | return (i == 0 || i == 4)
32 | ? IconButton(
33 | onPressed: () {},
34 | color: Colors.grey,
35 | icon: Icon(listIcons[i]),
36 | )
37 | : Transform.scale(
38 | scale: lerpDouble(
39 | .5,
40 | 1,
41 | animation2.value,
42 | ),
43 | child: FloatingActionButton(
44 | mini: i != 2,
45 | heroTag: i.toString(),
46 | onPressed: () {},
47 | backgroundColor: Colors.white,
48 | elevation: 1,
49 | foregroundColor: const Color(0xffc21451),
50 | child: Icon(listIcons[i]),
51 | ),
52 | );
53 | }),
54 | ),
55 | ),
56 | );
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/lib/projects/music_album_collection/screens/widgets/album_card_text.dart:
--------------------------------------------------------------------------------
1 |
2 | import 'package:flutter/material.dart';
3 |
4 | class AlbumCardText extends StatelessWidget {
5 | const AlbumCardText({
6 | super.key,
7 | required this.textSize,
8 | required this.heroTag,
9 | this.text,
10 | this.colorText,
11 | });
12 |
13 | final double textSize;
14 | final String heroTag;
15 | final String? text;
16 | final Color? colorText;
17 |
18 | @override
19 | Widget build(BuildContext context) {
20 | return Hero(
21 | tag: heroTag,
22 | child: FittedBox(
23 | child: Material(
24 | color: Colors.transparent,
25 | child: Text(
26 | text!,
27 | maxLines: 1,
28 | overflow: TextOverflow.ellipsis,
29 | style: TextStyle(
30 | fontSize: textSize,
31 | fontWeight: FontWeight.bold,
32 | color: colorText,
33 | ),
34 | ),
35 | ),
36 | ),
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/projects/music_vinyl_player/models/song.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_projects/projects/music_vinyl_player/models/album.dart';
2 |
3 | class Song {
4 | const Song(this.title, this.duration, this.album);
5 |
6 | final String title;
7 | final Duration duration;
8 | final Album album;
9 |
10 |
11 | static final currentSong =
12 | Song('Anónimo', const Duration(seconds: 213), Album.listAlbum[1]);
13 | }
14 |
--------------------------------------------------------------------------------
/lib/projects/music_vinyl_player/music_vinyl_player.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/music_vinyl_player/ui/my_library/my_library_page.dart';
3 | import 'package:google_fonts/google_fonts.dart';
4 |
5 | class MusicVinylPlayer extends StatelessWidget {
6 | const MusicVinylPlayer({super.key});
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return MaterialApp(
11 | theme: ThemeData(
12 | iconTheme: const IconThemeData(color: Colors.black),
13 | visualDensity: VisualDensity.adaptivePlatformDensity,
14 | textTheme: GoogleFonts.spectralTextTheme(),
15 | appBarTheme: AppBarTheme(
16 | titleTextStyle: GoogleFonts.poppins(),
17 | iconTheme: const IconThemeData(color: Colors.black),
18 | color: Colors.transparent,
19 | elevation: 0,
20 | actionsIconTheme: const IconThemeData(color: Colors.black),
21 | ),
22 | ),
23 | home: const MyLibraryPage(),
24 | );
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/lib/projects/music_vinyl_player/ui/my_library/widgets/my_library_widgets.dart:
--------------------------------------------------------------------------------
1 | export 'package:flutter_projects/projects/music_vinyl_player/ui/my_library/widgets/description_card.dart';
2 | export 'package:flutter_projects/projects/music_vinyl_player/ui/my_library/widgets/song_play_footer.dart';
3 | export 'package:flutter_projects/projects/music_vinyl_player/ui/my_library/widgets/vinyl_disk_card.dart';
4 | export 'package:flutter_projects/projects/music_vinyl_player/ui/song_player/song_player_page.dart';
5 |
--------------------------------------------------------------------------------
/lib/projects/music_vinyl_player/ui/my_library/widgets/row_stars.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class RowStars extends StatelessWidget {
4 | const RowStars({
5 | super.key,
6 | this.stars,
7 | this.size,
8 | this.color = Colors.cyan,
9 | });
10 |
11 | final double? stars;
12 | final double? size;
13 | final Color color;
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | final colorStars = color;
18 | final fillStar = Padding(
19 | padding: const EdgeInsets.only(right: 1),
20 | child: Icon(Icons.star, color: colorStars, size: size),
21 | );
22 |
23 | final halfStar = Padding(
24 | padding: const EdgeInsets.only(right: 1),
25 | child: Icon(Icons.star_half, color: colorStars, size: size),
26 | );
27 |
28 | final voidStar = Padding(
29 | padding: const EdgeInsets.only(right: 1),
30 | child: Icon(Icons.star, color: Colors.grey[300], size: size),
31 | );
32 |
33 | var fillStars = stars!.floor();
34 | final addHalfStar = (stars! - fillStars) >= 0.5;
35 | final listStars = List.generate(fillStars, (i) => fillStar);
36 | if (addHalfStar) {
37 | listStars.add(halfStar);
38 | fillStars++;
39 | }
40 | listStars.addAll(List.generate(5 - fillStars, (i) => voidStar));
41 | return Row(children: listStars);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/lib/projects/music_vinyl_player/ui/my_library/widgets/song_play_footer.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/music_vinyl_player/models/song.dart';
3 | import 'package:google_fonts/google_fonts.dart';
4 |
5 | class SongPlayFooter extends StatelessWidget {
6 | const SongPlayFooter({
7 | super.key,
8 | required this.song,
9 | });
10 |
11 | final Song song;
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Row(
16 | children: [
17 | SizedBox(
18 | height: 50,
19 | width: 50,
20 | child: Stack(
21 | fit: StackFit.expand,
22 | children: [
23 | CircleAvatar(
24 | backgroundColor: Colors.white,
25 | backgroundImage: AssetImage(song.album.pathImage!),
26 | ),
27 | const CircularProgressIndicator(
28 | value: .7,
29 | strokeWidth: 5,
30 | backgroundColor: Colors.white,
31 | valueColor: AlwaysStoppedAnimation(Color(0xffd4af90)),
32 | ),
33 | ],
34 | ),
35 | ),
36 | const SizedBox(width: 20),
37 | Column(
38 | crossAxisAlignment: CrossAxisAlignment.start,
39 | children: [
40 | Text(
41 | song.album.author!,
42 | style: GoogleFonts.poppins(fontWeight: FontWeight.w500),
43 | ),
44 | Text(
45 | 'Anonimo',
46 | style: GoogleFonts.poppins(
47 | fontWeight: FontWeight.w500,
48 | color: Colors.grey,
49 | fontSize: 15,
50 | height: 1.5,
51 | ),
52 | ),
53 | ],
54 | ),
55 | const Spacer(),
56 | IconButton(
57 | onPressed: () {},
58 | iconSize: 38,
59 | color: Colors.grey[700],
60 | icon: const Icon(
61 | Icons.play_circle_outline,
62 | ),
63 | ),
64 | IconButton(
65 | onPressed: () {},
66 | iconSize: 38,
67 | color: Colors.grey[700],
68 | icon: const Icon(
69 | Icons.playlist_play,
70 | ),
71 | ),
72 | ],
73 | );
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/lib/projects/music_vinyl_player/ui/song_player/widgets/now_playing_app_bar.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:google_fonts/google_fonts.dart';
3 |
4 | class NowPlayingAppBar extends StatelessWidget {
5 | const NowPlayingAppBar({
6 | super.key,
7 | });
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | return Container(
12 | padding: const EdgeInsets.only(bottom: 10),
13 | decoration: BoxDecoration(
14 | color: Colors.grey[100],
15 | borderRadius: const BorderRadius.only(
16 | bottomRight: Radius.circular(60),
17 | ),
18 | ),
19 | child: SafeArea(
20 | child: Row(
21 | children: [
22 | const BackButton(),
23 | const Spacer(),
24 | Text(
25 | 'NOW PLAYING',
26 | style: GoogleFonts.poppins(
27 | color: Colors.grey,
28 | fontWeight: FontWeight.w500,
29 | fontSize: 20,
30 | letterSpacing: 3,
31 | ),
32 | ),
33 | const Spacer(),
34 | ],
35 | ),
36 | ),
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/projects/music_vinyl_player/ui/song_player/widgets/player_controls.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class PlayerControls extends StatelessWidget {
4 | const PlayerControls({
5 | super.key,
6 | required this.onPausePlay,
7 | required this.isPlaying,
8 | });
9 |
10 | final VoidCallback onPausePlay;
11 | final bool isPlaying;
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Stack(
16 | alignment: Alignment.center,
17 | children: [
18 | Container(
19 | width: MediaQuery.of(context).size.width * .7,
20 | decoration: BoxDecoration(
21 | color: Colors.white,
22 | boxShadow: const [
23 | BoxShadow(
24 | color: Colors.black12,
25 | blurRadius: 40,
26 | offset: Offset(0, 30),
27 | )
28 | ],
29 | borderRadius: BorderRadius.circular(30),
30 | ),
31 | padding: const EdgeInsets.symmetric(horizontal: 10),
32 | child: Row(
33 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
34 | children: [
35 | IconButton(
36 | onPressed: () {},
37 | iconSize: 38,
38 | color: const Color(0xffd4af70),
39 | icon: const Icon(Icons.skip_previous),
40 | ),
41 | IconButton(
42 | onPressed: () {},
43 | iconSize: 38,
44 | color: const Color(0xffd4af70),
45 | icon: const Icon(Icons.skip_next),
46 | ),
47 | ],
48 | ),
49 | ),
50 | InkWell(
51 | onTap: onPausePlay,
52 | borderRadius: BorderRadius.circular(45),
53 | child: CircleAvatar(
54 | backgroundColor: const Color(0xffd4af70),
55 | radius: 42,
56 | foregroundColor: Colors.white,
57 | child: Icon(
58 | isPlaying ? Icons.pause : Icons.play_arrow,
59 | size: 60,
60 | ),
61 | ),
62 | )
63 | ],
64 | );
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/lib/projects/music_vinyl_player/ui/song_player/widgets/song_player_widgets.dart:
--------------------------------------------------------------------------------
1 | export 'package:flutter_projects/projects/music_vinyl_player/ui/song_player/widgets/now_playing_app_bar.dart';
2 | export 'package:flutter_projects/projects/music_vinyl_player/ui/song_player/widgets/player_controls.dart';
3 | export 'package:flutter_projects/projects/music_vinyl_player/ui/song_player/widgets/player_indicator.dart';
4 | export 'package:flutter_projects/projects/music_vinyl_player/ui/widgets/vinyl_disk.dart';
5 |
--------------------------------------------------------------------------------
/lib/projects/music_vinyl_player/ui/widgets/vinyl_disk.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class VinylDisk extends StatelessWidget {
4 | const VinylDisk({
5 | super.key,
6 | required this.albumImagePath,
7 | required this.heightDisk,
8 | });
9 |
10 | final String? albumImagePath;
11 | final double? heightDisk;
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Stack(
16 | alignment: Alignment.center,
17 | children: [
18 | Image.asset(
19 | 'assets/img/music/vinyl.png',
20 | height: heightDisk,
21 | ),
22 | ClipRRect(
23 | borderRadius: BorderRadius.circular(heightDisk! * .3),
24 | child: Image.asset(albumImagePath!, height: heightDisk! * .3),
25 | )
26 | ],
27 | );
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/lib/projects/orix_gaming/models/video_game.dart:
--------------------------------------------------------------------------------
1 | class VideoGame {
2 | const VideoGame({
3 | this.title,
4 | this.srcImage,
5 | this.nowPlaying,
6 | this.genre,
7 | });
8 |
9 | final String? title;
10 | final String? srcImage;
11 | final int? nowPlaying;
12 | final String? genre;
13 |
14 |
15 | static const mainGame = VideoGame(
16 | title: 'League of Legends',
17 | genre: 'MOBA',
18 | nowPlaying: 12310,
19 | srcImage: 'assets/img/gaming/lol.jpg',
20 | );
21 |
22 | static const videoGames = [
23 | VideoGame(
24 | title: 'Animal Crossing',
25 | genre: 'Simulation',
26 | nowPlaying: 1230,
27 | srcImage: 'assets/img/gaming/animal_crossing.jpg',
28 | ),
29 | VideoGame(
30 | title: 'COD Warzone',
31 | genre: 'Shooter FPS',
32 | nowPlaying: 1939,
33 | srcImage: 'assets/img/gaming/codwarzone.jpg',
34 | ),
35 | VideoGame(
36 | title: 'Crash Bandicoot 4',
37 | genre: 'Adventure',
38 | nowPlaying: 1239,
39 | srcImage: 'assets/img/gaming/crash_bandicoot_4.jpg',
40 | ),
41 | VideoGame(
42 | title: 'Cyberpunk 2077',
43 | genre: 'ARPG',
44 | nowPlaying: 1199,
45 | srcImage: 'assets/img/gaming/cyberpunk2077.jpg',
46 | ),
47 | VideoGame(
48 | title: 'Doom Eternal',
49 | genre: 'Shooter FPS',
50 | nowPlaying: 1002,
51 | srcImage: 'assets/img/gaming/doom_eternal.jpg',
52 | ),
53 | VideoGame(
54 | title: 'Fall Guys',
55 | genre: 'Battle Royale',
56 | nowPlaying: 3919,
57 | srcImage: 'assets/img/gaming/fall_guys.jpg',
58 | ),
59 | VideoGame(
60 | title: 'Ori and the Will of the Wisps',
61 | genre: 'Platforms',
62 | nowPlaying: 1002,
63 | srcImage: 'assets/img/gaming/ori.jpg',
64 | ),
65 | VideoGame(
66 | title: 'Spiderman The Game',
67 | genre: 'Action',
68 | nowPlaying: 2100,
69 | srcImage: 'assets/img/gaming/spiderman.jpg',
70 | ),
71 | VideoGame(
72 | title: 'Valorant',
73 | genre: 'Shooter FPS',
74 | nowPlaying: 1000,
75 | srcImage: 'assets/img/gaming/valorant.jpg',
76 | ),
77 | ];
78 |
79 | }
80 |
--------------------------------------------------------------------------------
/lib/projects/orix_gaming/ui/widgets/rounded_icon_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:google_fonts/google_fonts.dart';
3 |
4 | class RoundedIconButton extends StatelessWidget {
5 | const RoundedIconButton({
6 | super.key,
7 | required this.iconData,
8 | required this.label,
9 | required this.onPressed,
10 | });
11 |
12 | final IconData iconData;
13 | final String label;
14 | final VoidCallback onPressed;
15 |
16 | @override
17 | Widget build(BuildContext context) {
18 | return TextButton.icon(
19 | style: TextButton.styleFrom(
20 | foregroundColor: Colors.black,
21 | shape: StadiumBorder(
22 | side: BorderSide(color: Colors.grey[200]!, width: 1.5),
23 | ),
24 | padding: const EdgeInsets.fromLTRB(5, 5, 8, 5),
25 | ),
26 | onPressed: onPressed,
27 | icon: Container(
28 | padding: const EdgeInsets.all(6),
29 | decoration: BoxDecoration(
30 | gradient: LinearGradient(
31 | colors: [
32 | Theme.of(context).primaryColorLight,
33 | Theme.of(context).primaryColorDark,
34 | ],
35 | ),
36 | shape: BoxShape.circle,
37 | ),
38 | child: Icon(
39 | iconData,
40 | color: Colors.white,
41 | ),
42 | ),
43 | label: Text(
44 | label,
45 | softWrap: false,
46 | style: GoogleFonts.poppins(
47 | fontSize: 18,
48 | fontWeight: FontWeight.w500,
49 | ),
50 | ),
51 | );
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/lib/projects/orix_gaming/ui/widgets/user_avatar.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class UserAvatar extends StatelessWidget {
4 | const UserAvatar({
5 | super.key,
6 | });
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return SizedBox(
11 | width: 55,
12 | height: 55,
13 | child: Stack(
14 | children: [
15 | Container(
16 | margin: const EdgeInsets.fromLTRB(5, 10, 5, 0),
17 | decoration: BoxDecoration(
18 | color: Colors.lightBlueAccent[100],
19 | borderRadius: BorderRadius.circular(10),),
20 | ),
21 | Image.asset('assets/img/gaming/boy.png')
22 | ],
23 | ),
24 | );
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/lib/projects/photographers_app/models/post.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_projects/projects/photographers_app/models/users.dart';
2 |
3 | class PhotoPost {
4 | PhotoPost({
5 | this.photoPost,
6 | this.comments,
7 | this.likes,
8 | this.isLiked,
9 | this.user,
10 | });
11 |
12 | final String? photoPost;
13 | int? comments;
14 | int? likes;
15 | bool? isLiked;
16 | final PhotoUser? user;
17 |
18 | static final listHomePost = [
19 | PhotoPost(
20 | user: PhotoUser.kevin,
21 | likes: 1220,
22 | comments: 229,
23 | isLiked: false,
24 | photoPost: PhotoUser.kevin.listPhotosUrl!.first,
25 | ),
26 | PhotoPost(
27 | user: PhotoUser.maria,
28 | likes: 1220,
29 | comments: 229,
30 | isLiked: false,
31 | photoPost: PhotoUser.maria.listPhotosUrl!.first,
32 | ),
33 | PhotoPost(
34 | user: PhotoUser.liliana,
35 | likes: 1220,
36 | comments: 229,
37 | isLiked: false,
38 | photoPost: PhotoUser.liliana.listPhotosUrl!.first,
39 | ),
40 | PhotoPost(
41 | user: PhotoUser.eduard,
42 | likes: 1220,
43 | comments: 229,
44 | isLiked: false,
45 | photoPost: PhotoUser.eduard.listPhotosUrl!.first,
46 | ),
47 | PhotoPost(
48 | user: PhotoUser.kevin,
49 | likes: 1220,
50 | comments: 229,
51 | isLiked: false,
52 | photoPost: PhotoUser.kevin.listPhotosUrl![1],
53 | ),
54 | ];
55 | }
56 |
--------------------------------------------------------------------------------
/lib/projects/photographers_app/theme/photo_app_colors.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | class PhotoAppColors {
4 | static const kGrey = Color(0xffB0ABAB);
5 | static const kDarkBlue = Color(0xff3B3E49);
6 | static const kGreen = Color(0xff3Bd679);
7 | }
8 |
--------------------------------------------------------------------------------
/lib/projects/photographers_app/ui/home/widgets/image_user_container.dart:
--------------------------------------------------------------------------------
1 | import 'package:cached_network_image/cached_network_image.dart';
2 | import 'package:flutter/material.dart';
3 | import 'package:flutter_projects/projects/photographers_app/models/users.dart';
4 | import 'package:flutter_projects/projects/photographers_app/theme/photo_app_colors.dart';
5 |
6 | class PhotoUserCard extends StatelessWidget {
7 | const PhotoUserCard({
8 | super.key,
9 | required this.user,
10 | this.size = 100.0,
11 | this.onTap,
12 | });
13 |
14 | final PhotoUser user;
15 | final double size;
16 | final VoidCallback? onTap;
17 |
18 | @override
19 | Widget build(BuildContext context) {
20 | return InkWell(
21 | onTap: onTap ?? () {},
22 | splashColor: Colors.transparent,
23 | highlightColor: Colors.transparent,
24 | child: Padding(
25 | padding: const EdgeInsets.only(right: 30),
26 | child: Column(
27 | children: [
28 | Container(
29 | height: size,
30 | width: size,
31 | decoration: BoxDecoration(
32 | color: Colors.white,
33 | boxShadow: [
34 | BoxShadow(
35 | color: Colors.grey.shade300,
36 | blurRadius: 20,
37 | offset: const Offset(-10, 10),)
38 | ],
39 | borderRadius: BorderRadius.circular(size * .35),
40 | image: DecorationImage(
41 | image: CachedNetworkImageProvider(user.photoUrl!),
42 | fit: BoxFit.cover,),),
43 | ),
44 | const SizedBox(height: 10),
45 | FittedBox(
46 | child: Text(
47 | user.name!,
48 | style: const TextStyle(
49 | fontSize: 16,
50 | fontWeight: FontWeight.bold,
51 | color: PhotoAppColors.kDarkBlue,
52 | ),
53 | ),
54 | ),
55 | ],
56 | ),
57 | ),
58 | );
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/lib/projects/photographers_app/ui/widgets/tile_clipper.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class TileClipper extends CustomClipper {
4 | TileClipper({this.inverted = false, this.curveSize = 30});
5 |
6 | final bool inverted;
7 | final double curveSize;
8 |
9 | @override
10 | Path getClip(Size size) {
11 | final path = Path();
12 | if (inverted) {
13 | path
14 | ..moveTo(0, curveSize)
15 | ..quadraticBezierTo(size.width * .5, 0, size.width, curveSize)
16 | ..lineTo(size.width, size.height - curveSize)
17 | ..quadraticBezierTo(size.width * .5, size.height - (curveSize * 2), 0,
18 | size.height - curveSize,);
19 | } else {
20 | path
21 | ..moveTo(0, curveSize + 3)
22 | ..quadraticBezierTo(
23 | size.width * .5, curveSize * 2, size.width, curveSize + 3,)
24 | ..lineTo(size.width, size.height - curveSize + 3)
25 | ..quadraticBezierTo(size.width * .5, size.height + curveSize, 0,
26 | size.height - curveSize + 3,);
27 | }
28 | return path;
29 | }
30 |
31 | @override
32 | bool shouldReclip(covariant CustomClipper oldClipper) => false;
33 | }
34 |
--------------------------------------------------------------------------------
/lib/projects/photographers_app/ui/widgets/tile_skew_clipper.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class TileSkewClipper extends CustomClipper {
4 | TileSkewClipper({required this.inverted, this.curveSize = 35.0});
5 |
6 | final bool inverted;
7 | final double curveSize;
8 |
9 | @override
10 | Path getClip(Size size) {
11 | final path = Path();
12 | if (inverted) {
13 | path
14 | ..quadraticBezierTo(size.width * .5, curveSize, size.width, curveSize)
15 | ..lineTo(size.width, size.height)
16 | ..quadraticBezierTo(
17 | size.width * .5,
18 | size.height,
19 | 0,
20 | size.height - curveSize,
21 | );
22 | } else {
23 | path
24 | ..moveTo(0, curveSize)
25 | ..quadraticBezierTo(size.width * .5, curveSize, size.width, 0)
26 | ..lineTo(size.width, size.height - curveSize)
27 | ..quadraticBezierTo(size.width * .5, size.height, 0, size.height);
28 | }
29 | return path;
30 | }
31 |
32 | @override
33 | bool shouldReclip(covariant CustomClipper oldClipper) => true;
34 | }
35 |
--------------------------------------------------------------------------------
/lib/projects/superheroes/superheroes_app.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/superheroes/ui/superhero_slider_page.dart';
3 | import 'package:google_fonts/google_fonts.dart';
4 |
5 | class SuperheroesApp extends StatelessWidget {
6 | const SuperheroesApp({super.key});
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return MaterialApp(
11 | theme: ThemeData(
12 | primaryColor: Colors.white,
13 | scaffoldBackgroundColor: Colors.white,
14 | appBarTheme: AppBarTheme(
15 | backgroundColor: Colors.white,
16 | iconTheme: const IconThemeData(color: Colors.black),
17 | titleTextStyle: GoogleFonts.leagueSpartan(
18 | fontSize: 22,
19 | fontWeight: FontWeight.w600,
20 | color: Colors.black,
21 | ),
22 | ),
23 | textTheme: TextTheme(
24 | headline2: GoogleFonts.leagueSpartan(
25 | fontWeight: FontWeight.w600,
26 | letterSpacing: -3,
27 | height: 0.9,
28 | fontSize: 64,
29 | ),
30 | headline5: GoogleFonts.leagueSpartan(
31 | letterSpacing: -1,
32 | fontWeight: FontWeight.w500,
33 | ),
34 | ).apply(
35 | displayColor: Colors.white,
36 | bodyColor: Colors.white,
37 | ),
38 | ),
39 | home: const SuperheroSliderPage(),
40 | );
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/lib/projects/template_gallery/template_gallery_app.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/template_gallery/ui/contact_list_page.dart';
3 |
4 | class TemplateGalleryApp extends StatelessWidget {
5 | const TemplateGalleryApp({super.key});
6 |
7 | @override
8 | Widget build(BuildContext context) {
9 | return MaterialApp(
10 | theme: ThemeData.dark().copyWith(
11 | scaffoldBackgroundColor: const Color(0xff23202a),
12 | appBarTheme: AppBarTheme(
13 | color: Colors.deepPurple[400],
14 | centerTitle: true,
15 | iconTheme: const IconThemeData(
16 | color: Colors.white70,
17 | ),
18 | ),
19 | textTheme: TextTheme(
20 | bodyText2: TextStyle(color: Colors.grey[800]),
21 | ),
22 | iconTheme: const IconThemeData(color: Colors.grey),
23 | ),
24 | home: const ContactListPage(),
25 | );
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/projects/template_gallery/ui/contact_detail_screen.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/template_gallery/models/contact.dart';
3 | import 'package:flutter_projects/projects/template_gallery/ui/widgets/cards.dart';
4 |
5 | class ContactDetailScreen extends StatelessWidget {
6 | const ContactDetailScreen({
7 | super.key,
8 | required this.contact,
9 | required this.color,
10 | });
11 |
12 | final Contact contact;
13 | final Color color;
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return Scaffold(
18 | appBar: AppBar(
19 | title: Text(contact.name),
20 | ),
21 | body: Padding(
22 | padding: const EdgeInsets.all(20),
23 | child: SafeArea(
24 | child: ContactCard(
25 | contact: contact,
26 | borderColor: color,
27 | ),
28 | ),
29 | ),
30 | );
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/lib/projects/travel_app/extensions/text_theme_x.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | extension TextThemeStylesX on BuildContext {
4 | TextStyle get bodyText1 => Theme.of(this).textTheme.bodyText1!;
5 |
6 | TextStyle get bodyText2 => Theme.of(this).textTheme.bodyText2!;
7 |
8 | TextStyle get subtitle1 => Theme.of(this).textTheme.subtitle1!;
9 |
10 | TextStyle get subtitle2 => Theme.of(this).textTheme.subtitle2!;
11 |
12 | TextStyle get headline1 => Theme.of(this).textTheme.headline1!;
13 |
14 | TextStyle get headline2 => Theme.of(this).textTheme.headline2!;
15 |
16 | TextStyle get headline3 => Theme.of(this).textTheme.headline3!;
17 |
18 | TextStyle get headline4 => Theme.of(this).textTheme.headline4!;
19 |
20 | TextStyle get headline5 => Theme.of(this).textTheme.headline5!;
21 |
22 | TextStyle get headline6 => Theme.of(this).textTheme.headline6!;
23 | }
24 |
--------------------------------------------------------------------------------
/lib/projects/travel_app/travel_app.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/travel_app/theme/theme.dart';
3 | import 'package:flutter_projects/projects/travel_app/ui/feed/feed_screen.dart';
4 |
5 | class TravelApp extends StatelessWidget {
6 | const TravelApp({super.key});
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return MaterialApp(
11 | theme: TravelTheme.theme,
12 | home: const FeedScreen(),
13 | );
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lib/projects/travel_app/ui/feed/widgets/travel_navigation_bar.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class TravelNavigationBar extends StatelessWidget {
4 | const TravelNavigationBar({
5 | super.key,
6 | required this.items,
7 | required this.onTap,
8 | this.currentIndex = 0,
9 | }) : assert(items.length == 2, '');
10 |
11 | final List items;
12 | final ValueChanged onTap;
13 | final int currentIndex;
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return CustomPaint(
18 | painter: _NavPainter(),
19 | child: SizedBox(
20 | height: kToolbarHeight + MediaQuery.of(context).padding.bottom,
21 | child: Row(
22 | children: List.generate(
23 | items.length,
24 | (index) => Expanded(
25 | child: Icon(
26 | currentIndex == index
27 | ? items[index].selectedIcon
28 | : items[index].icon,
29 | color: currentIndex == index
30 | ? Theme.of(context).primaryColor
31 | : null,
32 | ),
33 | ),
34 | )..insert(1, const Spacer()),
35 | ),
36 | ),
37 | );
38 | }
39 | }
40 |
41 | class TravelNavigationBarItem {
42 | TravelNavigationBarItem({
43 | required this.icon,
44 | required this.selectedIcon,
45 | });
46 |
47 | final IconData icon;
48 | final IconData selectedIcon;
49 | }
50 |
51 | class _NavPainter extends CustomPainter {
52 | @override
53 | void paint(Canvas canvas, Size size) {
54 | final w = size.width;
55 | final h = size.height;
56 | final h5 = h * .55;
57 | final w5 = w * .5;
58 | final h6 = h * .6;
59 |
60 | final path = Path()
61 | ..lineTo(w5 - 75, 0)
62 | ..cubicTo((w5 - 50), 0, (w5 - 35), h5, w5, h6)
63 | ..cubicTo((w5 + 35), h5, (w5 + 50), 0, (w5 + 75), 0)
64 | ..lineTo(w, 0)
65 | ..lineTo(w, h)
66 | ..lineTo(0, h);
67 |
68 | canvas.drawShadow(path, Colors.black26, 10, false);
69 | canvas.drawPath(path, Paint()..color = Colors.white);
70 | }
71 |
72 | @override
73 | bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
74 | }
75 |
--------------------------------------------------------------------------------
/lib/projects/travel_app/ui/widgets/gradient_status_tag.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_projects/projects/travel_app/extensions/text_theme_x.dart';
3 | import 'package:flutter_projects/projects/travel_app/models/place.dart';
4 |
5 | class GradientStatusTag extends StatelessWidget {
6 | const GradientStatusTag({
7 | super.key,
8 | required this.statusTag,
9 | });
10 |
11 | final StatusTag statusTag;
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | String text;
16 | List colors;
17 | switch (statusTag) {
18 | case StatusTag.popular:
19 | text = 'Popular places';
20 | colors = [Colors.amber, Colors.orange.shade600];
21 | break;
22 | case StatusTag.event:
23 | text = 'Event';
24 | colors = [Colors.cyan, Colors.blue.shade600];
25 | break;
26 | }
27 | return Container(
28 | padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 20),
29 | decoration: BoxDecoration(
30 | borderRadius: BorderRadius.circular(10),
31 | gradient: LinearGradient(
32 | colors: colors,
33 | ),
34 | ),
35 | child: Text(
36 | text,
37 | style: context.subtitle1.copyWith(color: Colors.white),
38 | ),
39 | );
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/lib/projects/travel_app/ui/widgets/translate_animation.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class TranslateAnimation extends StatelessWidget {
4 | const TranslateAnimation({super.key, required this.child});
5 |
6 | final Widget child;
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return TweenAnimationBuilder(
11 | tween: Tween(begin: 1, end: 0),
12 | duration: const Duration(milliseconds: 600),
13 | curve: Curves.easeInOutBack,
14 | builder: (context, value, child) {
15 | return Transform.translate(
16 | offset: Offset(0, 100 * value),
17 | child: child,
18 | );
19 | },
20 | child: child,
21 | );
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: flutter_projects
2 | description: Flutter apps with amazing design and moderate animations
3 | version: 1.0.0+1
4 |
5 | environment:
6 | sdk: '>=2.17.5 <3.0.0'
7 | flutter: 3.7.11
8 |
9 | dependencies:
10 | flutter:
11 | sdk: flutter
12 |
13 | cupertino_icons: ^1.0.5
14 | cached_network_image: ^3.2.1
15 | google_fonts: ^4.0.4
16 | flutter_vector_icons: ^1.0.0
17 | flutter_staggered_grid_view: ^0.4.1
18 | flutter_svg: ^1.1.1+1
19 | vector_math: ^2.1.2
20 |
21 |
22 | dev_dependencies:
23 | flutter_test:
24 | sdk: flutter
25 | flutter_lints: ^2.0.1
26 | flutter_launcher_icons: ^0.9.3
27 | flutter:
28 |
29 | uses-material-design: true
30 |
31 | assets:
32 | - assets/img/
33 | - assets/img/findout/
34 | - assets/img/streaming/
35 | - assets/img/movie/
36 | - assets/img/music/
37 | - assets/img/superheroes/
38 | - assets/img/instagram/
39 | - assets/img/gaming/
40 | - assets/svg/instagram/
41 | - assets/svg/medical/
42 | - assets/svg/streaming/
43 | - assets/img/books/
44 | - assets/img/projects/
45 | - assets/img/boats/
46 | fonts:
47 | - family: MDIcons
48 | fonts:
49 | - asset: assets/icons/md_icons/MdIcons.ttf
50 |
51 | flutter_icons:
52 | ios: true
53 | remove_alpha_ios: true
54 | image_path: "assets/icons/icon.png"
--------------------------------------------------------------------------------