├── .github
└── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── .idea
└── runConfigurations
│ ├── development.xml
│ ├── production.xml
│ └── staging.xml
├── .metadata
├── .vscode
├── launch.json.example
└── settings.json
├── LICENSE
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ ├── google-services.json
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── development
│ │ ├── ic_launcher-playstore.png
│ │ └── res
│ │ │ ├── drawable
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_foreground.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_foreground.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_foreground.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_foreground.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_foreground.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ └── values
│ │ │ └── ic_launcher_background.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── ic_launcher-playstore.png
│ │ ├── kotlin
│ │ │ └── dev
│ │ │ │ └── brprogrammer
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-v21
│ │ │ └── launch_background.xml
│ │ │ ├── drawable
│ │ │ ├── ic_launch_image.xml
│ │ │ ├── ic_launcher_foreground.xml
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ ├── ic_launcher_background.xml
│ │ │ └── styles.xml
│ │ ├── profile
│ │ └── AndroidManifest.xml
│ │ └── staging
│ │ ├── ic_launcher-playstore.png
│ │ └── res
│ │ ├── drawable
│ │ └── ic_launcher_foreground.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ └── values
│ │ └── ic_launcher_background.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── build.yaml
├── i18n
├── en
│ ├── auth.json
│ ├── misc.json
│ ├── movie.json
│ ├── purchase.json
│ └── seat.json
└── es
│ ├── auth.json
│ ├── misc.json
│ ├── movie.json
│ ├── purchase.json
│ └── seat.json
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Podfile
├── Podfile.lock
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── Runner.xcscheme
│ │ ├── development.xcscheme
│ │ ├── production.xcscheme
│ │ └── staging.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
├── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ ├── AppIcon-dev.appiconset
│ │ │ ├── 100.png
│ │ │ ├── 1024.png
│ │ │ ├── 114.png
│ │ │ ├── 120.png
│ │ │ ├── 128.png
│ │ │ ├── 144.png
│ │ │ ├── 152.png
│ │ │ ├── 16.png
│ │ │ ├── 167.png
│ │ │ ├── 172.png
│ │ │ ├── 180.png
│ │ │ ├── 196.png
│ │ │ ├── 20.png
│ │ │ ├── 216.png
│ │ │ ├── 256.png
│ │ │ ├── 29.png
│ │ │ ├── 32.png
│ │ │ ├── 40.png
│ │ │ ├── 48.png
│ │ │ ├── 50.png
│ │ │ ├── 512.png
│ │ │ ├── 55.png
│ │ │ ├── 57.png
│ │ │ ├── 58.png
│ │ │ ├── 60.png
│ │ │ ├── 64.png
│ │ │ ├── 72.png
│ │ │ ├── 76.png
│ │ │ ├── 80.png
│ │ │ ├── 87.png
│ │ │ ├── 88.png
│ │ │ └── Contents.json
│ │ ├── AppIcon-stg.appiconset
│ │ │ ├── 100.png
│ │ │ ├── 1024.png
│ │ │ ├── 114.png
│ │ │ ├── 120.png
│ │ │ ├── 128.png
│ │ │ ├── 144.png
│ │ │ ├── 152.png
│ │ │ ├── 16.png
│ │ │ ├── 167.png
│ │ │ ├── 172.png
│ │ │ ├── 180.png
│ │ │ ├── 196.png
│ │ │ ├── 20.png
│ │ │ ├── 216.png
│ │ │ ├── 256.png
│ │ │ ├── 29.png
│ │ │ ├── 32.png
│ │ │ ├── 40.png
│ │ │ ├── 48.png
│ │ │ ├── 50.png
│ │ │ ├── 512.png
│ │ │ ├── 55.png
│ │ │ ├── 57.png
│ │ │ ├── 58.png
│ │ │ ├── 60.png
│ │ │ ├── 64.png
│ │ │ ├── 72.png
│ │ │ ├── 76.png
│ │ │ ├── 80.png
│ │ │ ├── 87.png
│ │ │ ├── 88.png
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ ├── 100.png
│ │ │ ├── 1024.png
│ │ │ ├── 114.png
│ │ │ ├── 120.png
│ │ │ ├── 128.png
│ │ │ ├── 144.png
│ │ │ ├── 152.png
│ │ │ ├── 16.png
│ │ │ ├── 167.png
│ │ │ ├── 172.png
│ │ │ ├── 180.png
│ │ │ ├── 196.png
│ │ │ ├── 20.png
│ │ │ ├── 216.png
│ │ │ ├── 256.png
│ │ │ ├── 29.png
│ │ │ ├── 32.png
│ │ │ ├── 40.png
│ │ │ ├── 48.png
│ │ │ ├── 50.png
│ │ │ ├── 512.png
│ │ │ ├── 55.png
│ │ │ ├── 57.png
│ │ │ ├── 58.png
│ │ │ ├── 60.png
│ │ │ ├── 64.png
│ │ │ ├── 72.png
│ │ │ ├── 76.png
│ │ │ ├── 80.png
│ │ │ ├── 87.png
│ │ │ ├── 88.png
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ └── LaunchImage.imageset
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage@1x.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ └── README.md
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── GoogleService-Info.plist
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
├── RunnerTests
│ └── RunnerTests.swift
└── firebase_app_id_file.json
├── lib
├── bootstrap.dart
├── core
│ ├── app
│ │ ├── app.dart
│ │ └── flut_cinematic.dart
│ ├── core.dart
│ ├── injector
│ │ ├── environment.dart
│ │ ├── injector.dart
│ │ ├── overrides.dart
│ │ ├── providers.dart
│ │ ├── repositories.dart
│ │ ├── services.dart
│ │ └── state_notifier_providers.dart
│ ├── presentation
│ │ ├── enums
│ │ │ ├── enums.dart
│ │ │ └── movies_bottom_bar_status.dart
│ │ ├── presentation.dart
│ │ ├── providers
│ │ │ ├── providers.dart
│ │ │ └── value_provider.dart
│ │ └── widgets
│ │ │ ├── user_profile.dart
│ │ │ └── widgets.dart
│ ├── router
│ │ ├── app_router.dart
│ │ ├── router.dart
│ │ └── routes.dart
│ └── services
│ │ ├── services.dart
│ │ └── url_launcher_service.dart
├── features
│ ├── auth
│ │ ├── auth.dart
│ │ └── presentation
│ │ │ ├── presentation.dart
│ │ │ ├── providers
│ │ │ ├── auth
│ │ │ │ ├── auth_provider.dart
│ │ │ │ └── auth_state.dart
│ │ │ └── providers.dart
│ │ │ ├── screens
│ │ │ ├── login_screen.dart
│ │ │ └── screens.dart
│ │ │ └── widgets
│ │ │ ├── login_apple_sign_in.dart
│ │ │ ├── login_email_imput.dart
│ │ │ ├── login_google_sign_in.dart
│ │ │ ├── login_header.dart
│ │ │ ├── login_password_imput.dart
│ │ │ ├── login_sign_in_button.dart
│ │ │ └── widgets.dart
│ ├── features.dart
│ ├── movie
│ │ ├── movies.dart
│ │ └── presentation
│ │ │ ├── enums
│ │ │ ├── enums.dart
│ │ │ └── movie_type.dart
│ │ │ ├── extensions
│ │ │ ├── duration_x.dart
│ │ │ ├── extensions.dart
│ │ │ ├── movie_x.dart
│ │ │ └── video_x.dart
│ │ │ ├── presentation.dart
│ │ │ ├── providers
│ │ │ ├── movie
│ │ │ │ └── movie_provider.dart
│ │ │ ├── movies
│ │ │ │ ├── movies_provider.dart
│ │ │ │ └── movies_state.dart
│ │ │ ├── providers.dart
│ │ │ ├── search
│ │ │ │ ├── search_provider.dart
│ │ │ │ └── search_state.dart
│ │ │ └── video
│ │ │ │ ├── video_provider.dart
│ │ │ │ └── video_state.dart
│ │ │ ├── screens
│ │ │ ├── movie_screen.dart
│ │ │ ├── movies_screen.dart
│ │ │ ├── screens.dart
│ │ │ └── search_movies_screen.dart
│ │ │ └── widgets
│ │ │ ├── choose_seats_button.dart
│ │ │ ├── date_selector.dart
│ │ │ ├── movie_animated_poster.dart
│ │ │ ├── movie_detail_card.dart
│ │ │ ├── movie_genders_duration_and_adult.dart
│ │ │ ├── movies_bottom_bar.dart
│ │ │ ├── movies_list.dart
│ │ │ ├── movies_loaded_widget.dart
│ │ │ ├── movies_loading_widget.dart
│ │ │ ├── search_movie_result.dart
│ │ │ ├── search_movie_widget.dart
│ │ │ ├── select_cinema_and_hour.dart
│ │ │ ├── watch_trailer_button.dart
│ │ │ └── widgets.dart
│ ├── purchase
│ │ ├── presentation
│ │ │ ├── presentation.dart
│ │ │ ├── providers
│ │ │ │ ├── providers.dart
│ │ │ │ └── ticket
│ │ │ │ │ ├── ticket_provider.dart
│ │ │ │ │ └── ticket_state.dart
│ │ │ ├── screens
│ │ │ │ ├── purchase_screen.dart
│ │ │ │ └── screens.dart
│ │ │ └── widgets
│ │ │ │ ├── purchase_ok.dart
│ │ │ │ ├── qr_view.dart
│ │ │ │ ├── ticket_detail.dart
│ │ │ │ └── widgets.dart
│ │ └── purchase.dart
│ └── seat
│ │ ├── presentation
│ │ ├── enums
│ │ │ ├── enums.dart
│ │ │ └── seat_status.dart
│ │ ├── models
│ │ │ ├── models.dart
│ │ │ ├── seat_column.dart
│ │ │ └── seat_row.dart
│ │ ├── presentation.dart
│ │ ├── providers
│ │ │ ├── providers.dart
│ │ │ └── seats
│ │ │ │ └── seats_provider.dart
│ │ ├── screens
│ │ │ ├── screens.dart
│ │ │ └── seat_screen.dart
│ │ └── widgets
│ │ │ ├── book_tickets_and_seat_status_info.dart
│ │ │ ├── date_time_and_room_selected.dart
│ │ │ ├── letter_seat_indicator.dart
│ │ │ ├── screen_preview.dart
│ │ │ ├── seat_layout_widget.dart
│ │ │ ├── seat_widget.dart
│ │ │ └── widgets.dart
│ │ └── seat.dart
├── firebase_options
│ ├── firebase_options.dart
│ ├── firebase_options_dev.dart
│ └── firebase_options_stg.dart
├── lib.dart
├── main_development.dart
├── main_production.dart
└── main_staging.dart
├── packages
├── flut_cinematic_api_client
│ ├── .gitignore
│ ├── analysis_options.yaml
│ ├── build.yaml
│ ├── lib
│ │ ├── flut_cinematic_api_client.dart
│ │ └── src
│ │ │ ├── constants
│ │ │ ├── api_paths.dart
│ │ │ └── constants.dart
│ │ │ ├── helpers
│ │ │ └── helpers.dart
│ │ │ ├── http
│ │ │ ├── http.dart
│ │ │ └── perform_http_request.dart
│ │ │ ├── interceptors
│ │ │ ├── auth_interceptor.dart
│ │ │ ├── interceptors.dart
│ │ │ └── retry
│ │ │ │ ├── retry.dart
│ │ │ │ ├── retry_interceptor.dart
│ │ │ │ └── retry_options.dart
│ │ │ ├── result
│ │ │ └── result.dart
│ │ │ └── src.dart
│ └── pubspec.yaml
├── flut_cinematic_common
│ ├── .gitignore
│ ├── analysis_options.yaml
│ ├── build.yaml
│ ├── lib
│ │ ├── flut_cinematic_common.dart
│ │ └── src
│ │ │ ├── failures
│ │ │ ├── failures.dart
│ │ │ └── http_request_failure.dart
│ │ │ ├── helpers
│ │ │ ├── converter.dart
│ │ │ ├── either.dart
│ │ │ ├── helpers.dart
│ │ │ ├── platform.dart
│ │ │ └── typedefs.dart
│ │ │ └── src.dart
│ └── pubspec.yaml
├── flut_cinematic_data
│ ├── .gitignore
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── flut_cinematic_data.dart
│ │ └── src
│ │ │ ├── features
│ │ │ ├── auth
│ │ │ │ ├── auth.dart
│ │ │ │ └── repositories
│ │ │ │ │ ├── auth_repository.dart
│ │ │ │ │ └── repositories.dart
│ │ │ ├── features.dart
│ │ │ └── movie
│ │ │ │ ├── movie.dart
│ │ │ │ └── repositories
│ │ │ │ ├── movie_repository.dart
│ │ │ │ └── repositories.dart
│ │ │ └── src.dart
│ └── pubspec.yaml
├── flut_cinematic_domain
│ ├── .gitignore
│ ├── analysis_options.yaml
│ ├── build.yaml
│ ├── lib
│ │ ├── flut_cinematic_domain.dart
│ │ └── src
│ │ │ ├── features
│ │ │ ├── auth
│ │ │ │ ├── auth.dart
│ │ │ │ ├── entities
│ │ │ │ │ ├── entities.dart
│ │ │ │ │ └── user.dart
│ │ │ │ └── repositories
│ │ │ │ │ ├── i_auth_repository.dart
│ │ │ │ │ └── repositories.dart
│ │ │ ├── features.dart
│ │ │ └── movie
│ │ │ │ ├── entities
│ │ │ │ ├── entities.dart
│ │ │ │ ├── gender.dart
│ │ │ │ ├── movie.dart
│ │ │ │ └── video.dart
│ │ │ │ ├── movie.dart
│ │ │ │ ├── repositories
│ │ │ │ ├── i_movie_repository.dart
│ │ │ │ └── repositories.dart
│ │ │ │ ├── requests
│ │ │ │ ├── movie_request.dart
│ │ │ │ └── requests.dart
│ │ │ │ └── responses
│ │ │ │ ├── movie_response.dart
│ │ │ │ ├── responses.dart
│ │ │ │ └── video_response.dart
│ │ │ └── src.dart
│ └── pubspec.yaml
├── flut_cinematic_firebase
│ ├── .gitignore
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── flut_cinematic_firebase.dart
│ │ └── src
│ │ │ ├── services
│ │ │ ├── flut_cinematic_auth_service.dart
│ │ │ └── services.dart
│ │ │ └── src.dart
│ └── pubspec.yaml
└── flut_cinematic_ui
│ ├── .gitignore
│ ├── analysis_options.yaml
│ ├── assets
│ ├── icons
│ │ ├── FlutCinematic.ttf
│ │ └── config.json
│ └── svgs
│ │ ├── apple.svg
│ │ └── google.svg
│ ├── lib
│ ├── flut_cinematic_ui.dart
│ └── src
│ │ ├── constants
│ │ ├── constants.dart
│ │ ├── durations.dart
│ │ └── package.dart
│ │ ├── extensions
│ │ ├── build_context.dart
│ │ ├── date_time_x.dart
│ │ ├── extensions.dart
│ │ ├── iterables.dart
│ │ ├── num_x.dart
│ │ ├── string_x.dart
│ │ └── widget_x.dart
│ │ ├── gen
│ │ ├── assets.gen.dart
│ │ ├── fonts.gen.dart
│ │ └── gen.dart
│ │ ├── icons
│ │ ├── flut_cinematic_icons.dart
│ │ └── icons.dart
│ │ ├── layout
│ │ ├── border_radius.dart
│ │ ├── edge_insets.dart
│ │ ├── gaps.dart
│ │ ├── layout.dart
│ │ └── spaces.dart
│ │ ├── screens
│ │ ├── flut_cinematic_base_screen.dart
│ │ └── screens.dart
│ │ ├── src.dart
│ │ ├── theme
│ │ ├── flut_cinematic_theme.dart
│ │ ├── palette.dart
│ │ └── theme.dart
│ │ ├── typography
│ │ ├── font_weights.dart
│ │ ├── fonts
│ │ │ ├── RedHatDisplay-Medium.ttf
│ │ │ ├── RedHatDisplay-Regular.ttf
│ │ │ └── RedHatDisplay-SemiBold.ttf
│ │ ├── text_styles.dart
│ │ └── typography.dart
│ │ ├── utils
│ │ ├── debouncer.dart
│ │ ├── form_validator.dart
│ │ └── utils.dart
│ │ └── widgets
│ │ ├── buttons
│ │ ├── buttons.dart
│ │ ├── flut_cinematic_buttons.dart
│ │ └── flut_cinematic_icon_button.dart
│ │ ├── custom
│ │ ├── custom.dart
│ │ ├── flut_cinematic_appbar.dart
│ │ ├── flut_cinematic_base_shimmer.dart
│ │ ├── flut_cinematic_close_keyboard.darttw_close_keyboard.dart
│ │ ├── flut_cinematic_custom_card.dart
│ │ ├── flut_cinematic_divider.dart
│ │ ├── flut_cinematic_dot.dart
│ │ ├── flut_cinematic_image.dart
│ │ └── flut_cinematic_sticky_header.dart
│ │ ├── icon
│ │ ├── flut_cinematic_icon.dart
│ │ ├── flut_cinematic_icon_text.dart
│ │ └── icon.dart
│ │ ├── loaders
│ │ ├── flut_cinematic_blurry_loader.dart
│ │ └── loaders.dart
│ │ ├── text_fields
│ │ ├── flut_cinematic_search_text_field.dart
│ │ ├── flut_cinematic_text_field.dart
│ │ └── text_fields.dart
│ │ └── widgets.dart
│ └── pubspec.yaml
├── pubspec.lock
├── pubspec.yaml
└── slang.yaml
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
8 |
9 | ## Description
10 |
11 |
12 |
13 | ## Type of Change
14 |
15 |
16 |
17 | - [ ] ✨ New feature (non-breaking change which adds functionality)
18 | - [ ] 🛠️ Bug fix (non-breaking change which fixes an issue)
19 | - [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
20 | - [ ] 🧹 Code refactor
21 | - [ ] ✅ Build configuration change
22 | - [ ] 📝 Documentation
23 | - [ ] 🗑️ Chore
24 |
--------------------------------------------------------------------------------
/.idea/runConfigurations/development.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/runConfigurations/production.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/runConfigurations/staging.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.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: "d211f42860350d914a5ad8102f9ec32764dc6d06"
8 | channel: "stable"
9 |
10 | project_type: app
11 |
12 | # Tracks metadata for the flutter migrate command
13 | migration:
14 | platforms:
15 | - platform: root
16 | create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
17 | base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
18 | - platform: macos
19 | create_revision: d211f42860350d914a5ad8102f9ec32764dc6d06
20 | base_revision: d211f42860350d914a5ad8102f9ec32764dc6d06
21 | - platform: ios
22 | create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
23 | base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
24 |
25 | # User provided section
26 |
27 | # List of Local paths (relative to this file) that should be
28 | # ignored by the migrate tool.
29 | #
30 | # Files that are not part of the templates will be ignored by default.
31 | unmanaged_files:
32 | - 'lib/main.dart'
33 | - 'ios/Runner.xcodeproj/project.pbxproj'
34 |
--------------------------------------------------------------------------------
/.vscode/launch.json.example:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "name": "Launch development",
6 | "request": "launch",
7 | "type": "dart",
8 | "program": "lib/main_development.dart",
9 | "args": [
10 | "--flavor",
11 | "development",
12 | "--target",
13 | "lib/main_development.dart"
14 | ],
15 | "toolArgs": [
16 | "--dart-define",
17 | "apiKey=your-api-key-here",
18 | "--dart-define",
19 | "baseUrl=base-url-here",
20 | "--dart-define",
21 | "baseImageUrl=base-image-url-here"
22 | ]
23 | },
24 | {
25 | "name": "Launch staging",
26 | "request": "launch",
27 | "type": "dart",
28 | "program": "lib/main_staging.dart",
29 | "args": [
30 | "--flavor",
31 | "staging",
32 | "--target",
33 | "lib/main_staging.dart"
34 | ]
35 | },
36 | {
37 | "name": "Launch production",
38 | "request": "launch",
39 | "type": "dart",
40 | "program": "lib/main_production.dart",
41 | "args": [
42 | "--flavor",
43 | "production",
44 | "--target",
45 | "lib/main_production.dart"
46 | ]
47 | }
48 | ]
49 | }
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "search.exclude": {
3 | "**/*.g.dart": true,
4 | "**/*.freezed.dart": true
5 | },
6 | "editor.codeActionsOnSave": {
7 | "source.fixAll": "explicit",
8 | "source.organizeImports": "explicit"
9 | },
10 | "files.defaultLanguage": "dart",
11 | "editor.formatOnSave": true,
12 | "files.exclude": {
13 | "**/*.freezed.dart": true,
14 | "**/*.g.dart": false,
15 | "**/.flutter-plugins*": true,
16 | "**/.metadata*": true,
17 | "**/.packages": true
18 | }
19 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License
2 |
3 | Copyright (c) 2024 Brayan Cantos (brprogrammer).
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:very_good_analysis/analysis_options.yaml
2 |
3 | linter:
4 | rules:
5 | file_names: false
6 | always_put_required_named_parameters_first: false
7 | avoid_positional_boolean_parameters: false
8 | avoid_dynamic_calls: false
9 | overridden_fields: false
10 | unawaited_futures: false
11 | lines_longer_than_80_chars: false
12 | use_build_context_synchronously: false
13 | annotate_overrides: false
14 | use_setters_to_change_properties: false
15 | prefer_if_elements_to_conditional_expressions: false
16 | always_use_package_imports: false
17 | public_member_api_docs: false
18 | unnecessary_lambdas: false
19 | use_late_for_private_fields_and_variables: false
20 | one_member_abstracts: false
21 | prefer_constructors_over_static_methods: false
22 |
23 | analyzer:
24 | exclude:
25 | - "**/*.g.dart"
26 | - "**/*.gr.dart"
27 | - "**/*.freezed.dart"
28 | - "**/firebase_options/*.dart"
29 | errors:
30 | unused_import: error
31 | invalid_annotation_target: ignore
32 | avoid_renaming_method_parameters: ignore
33 | type_annotate_public_apis: ignore
34 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /local.properties
5 | GeneratedPluginRegistrant.java
6 |
7 | # Remember to never publicly share your keystore.
8 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
9 | key.properties
10 | **/*.keystore
11 | **/*.jks
12 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/development/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-hdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-hdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-mdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-mdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-xhdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-xhdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-xxhdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-xxhdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-xxxhdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/development/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/development/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #1E0B26
4 |
--------------------------------------------------------------------------------
/android/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/dev/brprogrammer/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package dev.brprogrammer.flut_cinematic
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #181818
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 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/staging/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/staging/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/staging/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/staging/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/staging/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/staging/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/staging/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/staging/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/staging/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/staging/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/staging/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/android/app/src/staging/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #1E0B26
4 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.7.10'
3 | repositories {
4 | google()
5 | mavenCentral()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:7.3.0'
10 | // START: FlutterFire Configuration
11 | classpath 'com.google.gms:google-services:4.3.14'
12 | // END: FlutterFire Configuration
13 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
14 | }
15 | }
16 |
17 | allprojects {
18 | repositories {
19 | google()
20 | mavenCentral()
21 | }
22 | }
23 |
24 | rootProject.buildDir = '../build'
25 | subprojects {
26 | project.buildDir = "${rootProject.buildDir}/${project.name}"
27 | }
28 | subprojects {
29 | project.evaluationDependsOn(':app')
30 | }
31 |
32 | tasks.register("clean", Delete) {
33 | delete rootProject.buildDir
34 | }
35 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
7 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/build.yaml:
--------------------------------------------------------------------------------
1 | targets:
2 | $default:
3 | builders:
4 | freezed:
5 | generate_for:
6 | include:
7 | - "lib/core/shared/presentation/providers/**/**_provider.dart"
8 | - "lib/features/**/presentation/providers/**/**_provider.dart"
9 | - "lib/features/seat/presentation/models/**.dart"
10 | source_gen|combining_builder:
11 | options:
12 | ignore_for_file:
13 | - "type=lint"
14 |
--------------------------------------------------------------------------------
/i18n/en/auth.json:
--------------------------------------------------------------------------------
1 | {
2 | "readyForPopcorn": "Ready for popcorn and entertainment!",
3 | "enterYour": "Enter your ",
4 | "fildLoverWorld": "film Lover World",
5 | "email": "Email",
6 | "typeYourEmail": "Type your email",
7 | "password": "Password",
8 | "typeYourPassword": "Type your password",
9 | "loginNow": "Login now",
10 | "invalidEmail": "Invalid email address",
11 | "passwordInvalid": "Password must be at least 4 characters long.",
12 | "fieldRequired": "This field is required.",
13 | "orYouCan": "Or you can also",
14 | "continueGoogle": "Continue with Google",
15 | "continueAppleID": "Continue with Apple ID"
16 | }
--------------------------------------------------------------------------------
/i18n/en/misc.json:
--------------------------------------------------------------------------------
1 | {
2 | "dubbedStandar": "Doblada, Estándar, 2D",
3 | "at": "at",
4 | "room": "Room",
5 | "date": "Date",
6 | "time": "Time",
7 | "location": "Location"
8 | }
--------------------------------------------------------------------------------
/i18n/en/movie.json:
--------------------------------------------------------------------------------
1 | {
2 | "inPremiere": "Premiere",
3 | "popular": "Popular",
4 | "upcoming": "Upcoming",
5 | "moviesFor": "Movies for",
6 | "today": "today",
7 | "searchMovies": "Search movies",
8 | "noMovieFound": "No movie found",
9 | "tomorrow": "tomorrow",
10 | "useTheSearchBar": "Use the search bar to filter by title",
11 | "getReadyForAPersonalized": "Get ready for a personalized movie experience!",
12 | "movies": "Movies",
13 | "candyStore": "Candy Store",
14 | "myProfile": "My Profile",
15 | "chooseTheSchedule": "Choose the schedule you like the most",
16 | "watchTrailer": "Watch trailer"
17 | }
--------------------------------------------------------------------------------
/i18n/en/purchase.json:
--------------------------------------------------------------------------------
1 | {
2 | "presentQr": "Present this QR when entering the cinema",
3 | "okGoIt": "Ok, got it!",
4 | "ticketDetails": "Ticket details"
5 | }
--------------------------------------------------------------------------------
/i18n/en/seat.json:
--------------------------------------------------------------------------------
1 | {
2 | "seats": {
3 | "one": "Seat",
4 | "other": "Seats"
5 | },
6 | "selected": "Selected",
7 | "available": "Available",
8 | "notAvailable": "Not aviable",
9 | "bookTickets": "Book tickets {{money}}",
10 | "chooseSeats": "Choose seats"
11 | }
--------------------------------------------------------------------------------
/i18n/es/auth.json:
--------------------------------------------------------------------------------
1 | {
2 | "readyForPopcorn": "¡Listo para palomitas y entretenimiento!",
3 | "enterYour": "Ingresa tu ",
4 | "fildLoverWorld": "Mundo Cinéfilo",
5 | "email": "Correo electrónico",
6 | "typeYourEmail": "Escribe tu correo electrónico",
7 | "password": "Contraseña",
8 | "typeYourPassword": "Escribe tu contraseña",
9 | "loginNow": "Iniciar sesión ahora",
10 | "invalidEmail": "Dirección de correo electrónico no válida",
11 | "passwordInvalid": "La contraseña debe tener al menos 4 caracteres.",
12 | "fieldRequired": "Este campo es obligatorio.",
13 | "orYouCan": "O también puedes",
14 | "continueGoogle": "Continuar con Google",
15 | "continueAppleID": "Continuar con Apple ID"
16 | }
--------------------------------------------------------------------------------
/i18n/es/misc.json:
--------------------------------------------------------------------------------
1 | {
2 | "dubbedStandar": "Doblada, Estándar, 2D",
3 | "at": "a las",
4 | "room": "Sala",
5 | "date": "Fecha",
6 | "time": "Hora",
7 | "location": "Ubicación"
8 | }
--------------------------------------------------------------------------------
/i18n/es/movie.json:
--------------------------------------------------------------------------------
1 | {
2 | "inPremiere": "Estreno",
3 | "popular": "Popular",
4 | "upcoming": "Próximamente",
5 | "moviesFor": "Películas para",
6 | "today": "hoy",
7 | "searchMovies": "Buscar películas",
8 | "noMovieFound": "No se encontró ninguna película",
9 | "tomorrow": "mañana",
10 | "useTheSearchBar": "Utiliza la barra de búsqueda para filtrar por título",
11 | "getReadyForAPersonalized": "¡Prepárate para una experiencia cinematográfica personalizada!",
12 | "movies": "Películas",
13 | "candyStore": "Tienda de dulces",
14 | "myProfile": "Mi perfil",
15 | "chooseTheSchedule": "Elige el horario que más te guste",
16 | "watchTrailer": "Ver tráiler"
17 | }
--------------------------------------------------------------------------------
/i18n/es/purchase.json:
--------------------------------------------------------------------------------
1 | {
2 | "presentQr": "Presenta este código QR al entrar al cine",
3 | "okGoIt": "¡Ok, entendido!",
4 | "ticketDetails": "Detalles del boleto"
5 | }
--------------------------------------------------------------------------------
/i18n/es/seat.json:
--------------------------------------------------------------------------------
1 | {
2 | "seats": {
3 | "one": "Asiento",
4 | "other": "Asientos"
5 | },
6 | "selected": "Seleccionado",
7 | "available": "Disponible",
8 | "notAvailable": "No disponible",
9 | "bookTickets": "Reservar boletos {{money}}",
10 | "chooseSeats": "Elegir asientos"
11 | }
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/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/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | # platform :ios, '11.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | project 'Runner', {
8 | 'Debug' => :debug,
9 | 'Profile' => :release,
10 | 'Release' => :release,
11 | }
12 |
13 | def flutter_root
14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
15 | unless File.exist?(generated_xcode_build_settings_path)
16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
17 | end
18 |
19 | File.foreach(generated_xcode_build_settings_path) do |line|
20 | matches = line.match(/FLUTTER_ROOT\=(.*)/)
21 | return matches[1].strip if matches
22 | end
23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
24 | end
25 |
26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
27 |
28 | flutter_ios_podfile_setup
29 |
30 | target 'Runner' do
31 | use_frameworks!
32 | use_modular_headers!
33 |
34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
35 | target 'RunnerTests' do
36 | inherit! :search_paths
37 | end
38 | end
39 |
40 | post_install do |installer|
41 | installer.pods_project.targets.each do |target|
42 | flutter_additional_ios_build_settings(target)
43 | end
44 | end
45 |
--------------------------------------------------------------------------------
/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-dev.appiconset/100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/100.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/1024.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/114.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/120.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/128.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/144.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/152.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/16.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/167.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/172.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/172.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/180.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/196.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/196.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/20.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/216.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/216.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/256.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/29.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/32.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/40.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/48.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/50.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/512.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/55.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/57.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/58.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/60.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/64.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/72.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/76.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/80.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/87.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/88.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/88.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/100.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/1024.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/114.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/120.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/128.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/144.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/152.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/16.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/167.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/172.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/172.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/180.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/196.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/196.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/20.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/216.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/216.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/256.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/29.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/32.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/40.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/48.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/50.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/512.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/55.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/57.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/58.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/60.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/64.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/72.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/76.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/80.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/87.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/88.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/88.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/128.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/16.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/172.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/172.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/196.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/196.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/216.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/216.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/256.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/32.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/48.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/512.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/55.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/64.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/88.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/AppIcon.appiconset/88.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "LaunchImage@1x.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "LaunchImage@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "LaunchImage@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/br-programmer/flut_cinematic/7d24632bb454143869c55c5eceb6515baff7eec7/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/GoogleService-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | API_KEY
6 | AIzaSyAExzqC5E2XhEc4WICAwetGZwjux9D0jI8
7 | GCM_SENDER_ID
8 | 343792956238
9 | PLIST_VERSION
10 | 1
11 | BUNDLE_ID
12 | dev.brprogrammer.flut-cinematic.dev
13 | PROJECT_ID
14 | flutcinematic
15 | STORAGE_BUCKET
16 | flutcinematic.appspot.com
17 | IS_ADS_ENABLED
18 |
19 | IS_ANALYTICS_ENABLED
20 |
21 | IS_APPINVITE_ENABLED
22 |
23 | IS_GCM_ENABLED
24 |
25 | IS_SIGNIN_ENABLED
26 |
27 | GOOGLE_APP_ID
28 | 1:343792956238:ios:418222dd4cdad37160a41f
29 |
30 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/ios/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/ios/firebase_app_id_file.json:
--------------------------------------------------------------------------------
1 | {
2 | "file_generated_by": "FlutterFire CLI",
3 | "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
4 | "GOOGLE_APP_ID": "1:343792956238:ios:21e7ac826f59a53960a41f",
5 | "FIREBASE_PROJECT_ID": "flutcinematic",
6 | "GCM_SENDER_ID": "343792956238"
7 | }
--------------------------------------------------------------------------------
/lib/bootstrap.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 | import 'dart:developer';
3 |
4 | import 'package:firebase_core/firebase_core.dart';
5 | import 'package:flut_cinematic/i18n/translations.g.dart';
6 | import 'package:flut_cinematic/lib.dart';
7 | import 'package:flutter/material.dart';
8 | import 'package:flutter_riverpod/flutter_riverpod.dart';
9 | import 'package:go_router/go_router.dart';
10 |
11 | Future bootstrap(Environment environment) async {
12 | final enableLogging = environment.enableLogging;
13 | return runZonedGuarded(
14 | () async {
15 | WidgetsFlutterBinding.ensureInitialized();
16 | await Firebase.initializeApp(options: environment.options);
17 | LocaleSettings.useDeviceLocale();
18 | GoRouter.optionURLReflectsImperativeAPIs = true;
19 | final app = ProviderScope(
20 | overrides: overrides(environment),
21 | child: const FlutCinematic(),
22 | );
23 | runApp(app);
24 | FlutterError.onError = (details) {
25 | if (enableLogging) {
26 | log(details.exceptionAsString(), stackTrace: details.stack);
27 | }
28 | };
29 | },
30 | (error, stack) {
31 | if (enableLogging) {
32 | log(error.toString(), stackTrace: stack);
33 | }
34 | },
35 | );
36 | }
37 |
--------------------------------------------------------------------------------
/lib/core/app/app.dart:
--------------------------------------------------------------------------------
1 | export 'flut_cinematic.dart';
2 |
--------------------------------------------------------------------------------
/lib/core/app/flut_cinematic.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/lib.dart';
2 | import 'package:flut_cinematic_ui/flut_cinematic_ui.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter/services.dart';
5 | import 'package:flutter_localizations/flutter_localizations.dart';
6 | import 'package:hooks_riverpod/hooks_riverpod.dart';
7 |
8 | class FlutCinematic extends HookConsumerWidget {
9 | const FlutCinematic({super.key});
10 |
11 | @override
12 | Widget build(BuildContext context, WidgetRef ref) {
13 | final router = ref.watch(routerProvider);
14 | return FlutCinematicCloseKeyboard(
15 | app: MaterialApp.router(
16 | routeInformationParser: router.routeInformationParser,
17 | routerDelegate: router.routerDelegate,
18 | debugShowCheckedModeBanner: false,
19 | routeInformationProvider: router.routeInformationProvider,
20 | localizationsDelegates: const [
21 | GlobalMaterialLocalizations.delegate,
22 | GlobalWidgetsLocalizations.delegate,
23 | GlobalCupertinoLocalizations.delegate,
24 | ],
25 | title: 'Flut Cinematic',
26 | themeMode: ThemeMode.dark,
27 | theme: FlutCinematicTheme.light,
28 | darkTheme: FlutCinematicTheme.dark,
29 | builder: (context, child) {
30 | SystemChrome.setSystemUIOverlayStyle(
31 | SystemUiOverlayStyle(
32 | statusBarBrightness: context.theme.brightness,
33 | ),
34 | );
35 | return child!;
36 | },
37 | ),
38 | );
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/core/core.dart:
--------------------------------------------------------------------------------
1 | export 'app/app.dart';
2 | export 'injector/injector.dart';
3 | export 'presentation/presentation.dart';
4 | export 'router/router.dart';
5 | export 'services/services.dart';
6 |
--------------------------------------------------------------------------------
/lib/core/injector/environment.dart:
--------------------------------------------------------------------------------
1 | import 'package:firebase_core/firebase_core.dart';
2 | import 'package:flut_cinematic/firebase_options/firebase_options.dart';
3 | import 'package:flut_cinematic/firebase_options/firebase_options_dev.dart'
4 | as default_options_dev;
5 | import 'package:flut_cinematic/firebase_options/firebase_options_stg.dart'
6 | as default_options_stg;
7 |
8 | enum Environment {
9 | dev(),
10 | staging(),
11 | prod();
12 |
13 | const Environment();
14 |
15 | bool get enableLogging => this != Environment.prod;
16 | String get apiKey => const String.fromEnvironment('apiKey');
17 | String get baseUrl => const String.fromEnvironment('baseUrl');
18 |
19 | FirebaseOptions get options {
20 | switch (this) {
21 | case Environment.dev:
22 | return default_options_dev.DefaultFirebaseOptions.currentPlatform;
23 | case Environment.staging:
24 | return default_options_stg.DefaultFirebaseOptions.currentPlatform;
25 | case Environment.prod:
26 | return DefaultFirebaseOptions.currentPlatform;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/lib/core/injector/injector.dart:
--------------------------------------------------------------------------------
1 | export 'environment.dart';
2 | export 'overrides.dart';
3 | export 'providers.dart';
4 | export 'repositories.dart';
5 | export 'services.dart';
6 | export 'state_notifier_providers.dart';
7 |
--------------------------------------------------------------------------------
/lib/core/injector/overrides.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/lib.dart';
2 | import 'package:flutter_riverpod/flutter_riverpod.dart';
3 |
4 | List overrides(Environment env) => [
5 | Providers.enviroment.overrideWithValue(env),
6 | ];
7 |
--------------------------------------------------------------------------------
/lib/core/injector/providers.dart:
--------------------------------------------------------------------------------
1 | import 'package:dio/dio.dart';
2 | import 'package:flut_cinematic/core/core.dart';
3 | import 'package:flut_cinematic_api_client/flut_cinematic_api_client.dart';
4 | import 'package:riverpod/riverpod.dart';
5 |
6 | class Providers {
7 | const Providers._();
8 | static final enviroment = Provider(
9 | (ref) => throw UnimplementedError(),
10 | );
11 |
12 | static final flutCinematicApi = Provider(
13 | (ref) {
14 | final env = ref.read(enviroment);
15 | final enableLogging = env.enableLogging;
16 | final dio = Dio(BaseOptions(baseUrl: env.baseUrl));
17 | dio.interceptors.addAll([
18 | RetryInterceptor(dio: dio, enableLogging: enableLogging),
19 | AuthInterceptor(apiKey: env.apiKey),
20 | ]);
21 | return Http(dio: dio, enableLogging: enableLogging);
22 | },
23 | );
24 | }
25 |
--------------------------------------------------------------------------------
/lib/core/injector/repositories.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/lib.dart';
2 | import 'package:flut_cinematic_data/flut_cinematic_data.dart';
3 | import 'package:flut_cinematic_domain/flut_cinematic_domain.dart';
4 | import 'package:riverpod/riverpod.dart';
5 |
6 | class Repositories {
7 | const Repositories._();
8 |
9 | static final movie = Provider(
10 | (ref) => MovieRepository(
11 | http: ref.read(Providers.flutCinematicApi),
12 | ),
13 | );
14 |
15 | static final auth = Provider(
16 | (ref) => AuthRepository(authService: ref.read(Services.auth))..init(),
17 | );
18 | }
19 |
--------------------------------------------------------------------------------
/lib/core/injector/services.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/core/core.dart';
2 | import 'package:flut_cinematic_firebase/flut_cinematic_firebase.dart';
3 | import 'package:riverpod/riverpod.dart';
4 |
5 | class Services {
6 | const Services._();
7 |
8 | static final auth = Provider(
9 | (ref) => FlutCinematicAuthService(),
10 | );
11 |
12 | static final urlLaunch = Provider(
13 | (ref) => const UrlLauncherService(),
14 | );
15 | }
16 |
--------------------------------------------------------------------------------
/lib/core/injector/state_notifier_providers.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/core/core.dart';
2 | import 'package:riverpod/riverpod.dart';
3 |
4 | class StateNotifiers {
5 | const StateNotifiers._();
6 |
7 | static final bottonBar = StateNotifierProvider<
8 | ValueProvider, MoviesBottomBarStatus>(
9 | (ref) => ValueProvider(MoviesBottomBarStatus.movies),
10 | );
11 | }
12 |
--------------------------------------------------------------------------------
/lib/core/presentation/enums/enums.dart:
--------------------------------------------------------------------------------
1 | export 'movies_bottom_bar_status.dart';
2 |
--------------------------------------------------------------------------------
/lib/core/presentation/enums/movies_bottom_bar_status.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/core/core.dart';
2 | import 'package:flut_cinematic_ui/flut_cinematic_ui.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | enum MoviesBottomBarStatus {
6 | movies(icon: FlutCinematicIcons.movies),
7 | candyStore(icon: FlutCinematicIcons.popcorn),
8 | myProfile(child: UserProfile());
9 |
10 | const MoviesBottomBarStatus({this.icon, this.child});
11 |
12 | final IconData? icon;
13 | final Widget? child;
14 |
15 | bool get profile => this == MoviesBottomBarStatus.myProfile;
16 | }
17 |
--------------------------------------------------------------------------------
/lib/core/presentation/presentation.dart:
--------------------------------------------------------------------------------
1 | export 'enums/enums.dart';
2 | export 'providers/providers.dart';
3 | export 'widgets/widgets.dart';
4 |
--------------------------------------------------------------------------------
/lib/core/presentation/providers/providers.dart:
--------------------------------------------------------------------------------
1 | export 'value_provider.dart';
2 |
--------------------------------------------------------------------------------
/lib/core/presentation/providers/value_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_riverpod/flutter_riverpod.dart';
2 |
3 | class ValueProvider extends StateNotifier {
4 | ValueProvider(super.state);
5 |
6 | void change(T value) => state = value;
7 | }
8 |
--------------------------------------------------------------------------------
/lib/core/presentation/widgets/user_profile.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/lib.dart';
2 | import 'package:flut_cinematic_ui/flut_cinematic_ui.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:hooks_riverpod/hooks_riverpod.dart';
5 |
6 | class UserProfile extends HookConsumerWidget {
7 | const UserProfile({super.key});
8 |
9 | @override
10 | Widget build(BuildContext context, WidgetRef ref) {
11 | final url = switch (ref.watch(authProvider)) {
12 | Authenticated(user: final user) => user.photoURL,
13 | _ => null,
14 | };
15 | return CircleAvatar(
16 | radius: 11,
17 | backgroundColor: Palette.grey,
18 | child: FlutCinematicImage(
19 | borderRadius: borderRadius12,
20 | imageUrl: url,
21 | ),
22 | );
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/core/presentation/widgets/widgets.dart:
--------------------------------------------------------------------------------
1 | export 'user_profile.dart';
2 |
--------------------------------------------------------------------------------
/lib/core/router/app_router.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/lib.dart';
2 | import 'package:flutter_riverpod/flutter_riverpod.dart';
3 | import 'package:go_router/go_router.dart';
4 |
5 | final routerProvider = Provider(
6 | (ref) {
7 | return GoRouter(
8 | initialLocation: Routes.movies.path,
9 | routes: AppRouter.routes,
10 | );
11 | },
12 | );
13 |
14 | class AppRouter {
15 | const AppRouter._();
16 |
17 | static List get routes => [
18 | GoRoute(
19 | path: Routes.auth.path,
20 | name: Routes.auth.name,
21 | builder: LoginScreen.builder,
22 | ),
23 | GoRoute(
24 | path: Routes.movies.path,
25 | name: Routes.movies.name,
26 | builder: MoviesScreen.builder,
27 | routes: [
28 | GoRoute(
29 | path: Routes.search.path,
30 | name: Routes.search.name,
31 | builder: SearchMoviesScreen.builder,
32 | ),
33 | GoRoute(
34 | path: Routes.movie.path,
35 | name: Routes.movie.name,
36 | builder: MovieScreen.builder,
37 | ),
38 | ],
39 | ),
40 | GoRoute(
41 | path: Routes.seat.path,
42 | name: Routes.seat.name,
43 | builder: SeatScreen.builder,
44 | ),
45 | GoRoute(
46 | path: Routes.ticketPurchase.path,
47 | name: Routes.ticketPurchase.name,
48 | builder: PurchaseScreen.builder,
49 | ),
50 | ];
51 | }
52 |
--------------------------------------------------------------------------------
/lib/core/router/router.dart:
--------------------------------------------------------------------------------
1 | export 'app_router.dart';
2 | export 'routes.dart';
3 |
--------------------------------------------------------------------------------
/lib/core/router/routes.dart:
--------------------------------------------------------------------------------
1 | class Routes {
2 | const Routes._({required this.name, required this.path});
3 | final String name;
4 | final String path;
5 |
6 | static Routes get auth => const Routes._(
7 | name: 'auth',
8 | path: '/auth',
9 | );
10 |
11 | static Routes get movies => const Routes._(
12 | name: 'movies',
13 | path: '/',
14 | );
15 |
16 | static Routes get search => const Routes._(
17 | name: 'search',
18 | path: 'search',
19 | );
20 |
21 | static Routes get movie => const Routes._(
22 | name: 'movie',
23 | path: 'movie/:id',
24 | );
25 |
26 | static Routes get seat => const Routes._(
27 | name: 'seat',
28 | path: '/seat',
29 | );
30 |
31 | static Routes get ticketPurchase => const Routes._(
32 | name: 'ticketPurchase',
33 | path: '/ticket-purchase',
34 | );
35 | }
36 |
--------------------------------------------------------------------------------
/lib/core/services/services.dart:
--------------------------------------------------------------------------------
1 | export 'url_launcher_service.dart';
2 |
--------------------------------------------------------------------------------
/lib/core/services/url_launcher_service.dart:
--------------------------------------------------------------------------------
1 | import 'package:url_launcher/url_launcher.dart';
2 |
3 | class UrlLauncherService {
4 | const UrlLauncherService();
5 |
6 | Future launch(Uri uri) async {
7 | if (await canLaunchUrl(uri)) {
8 | launchUrl(
9 | uri,
10 | mode: LaunchMode.externalApplication,
11 | );
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/lib/features/auth/auth.dart:
--------------------------------------------------------------------------------
1 | export 'presentation/presentation.dart';
2 |
--------------------------------------------------------------------------------
/lib/features/auth/presentation/presentation.dart:
--------------------------------------------------------------------------------
1 | export 'providers/providers.dart';
2 | export 'screens/screens.dart';
3 | export 'widgets/widgets.dart';
4 |
--------------------------------------------------------------------------------
/lib/features/auth/presentation/providers/auth/auth_provider.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:flut_cinematic/lib.dart';
4 | import 'package:flut_cinematic_common/flut_cinematic_common.dart';
5 | import 'package:flut_cinematic_domain/flut_cinematic_domain.dart';
6 | import 'package:freezed_annotation/freezed_annotation.dart';
7 | import 'package:riverpod/riverpod.dart';
8 |
9 | part 'auth_provider.freezed.dart';
10 | part 'auth_state.dart';
11 |
12 | final authProvider = StateNotifierProvider(
13 | (ref) => AuthProvider(
14 | const AuthState.unauthenticated(),
15 | authRepository: ref.read(Repositories.auth),
16 | )..init(),
17 | );
18 |
19 | class AuthProvider extends StateNotifier {
20 | AuthProvider(
21 | super.state, {
22 | required IAuthRepository authRepository,
23 | }) : _authRepository = authRepository;
24 |
25 | final IAuthRepository _authRepository;
26 | StreamSubscription? _subscription;
27 |
28 | void init() {
29 | _subscription = _authRepository.onUserChanged.listen(_listen);
30 | }
31 |
32 | Future login(String email, String password) async {
33 | state = const AuthState.authenticationInProgress();
34 | final result = await _authRepository.login(email, password);
35 | state = switch (result) {
36 | Right() => state,
37 | Left(value: final failure) => AuthState.authenticationFailed(
38 | failure: failure,
39 | ),
40 | };
41 | }
42 |
43 | @override
44 | void dispose() {
45 | _subscription?.cancel();
46 | _authRepository.dispose();
47 | super.dispose();
48 | }
49 |
50 | void _listen(User user) {
51 | state = AuthState.authenticated(user: user);
52 | }
53 |
54 | Future logout() async {
55 | await _authRepository.logout();
56 | state = const AuthState.unauthenticated();
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/lib/features/auth/presentation/providers/auth/auth_state.dart:
--------------------------------------------------------------------------------
1 | part of 'auth_provider.dart';
2 |
3 | @freezed
4 | class AuthState with _$AuthState {
5 | const factory AuthState.authenticated({required User user}) = Authenticated;
6 | const factory AuthState.unauthenticated() = Unauthenticated;
7 | const factory AuthState.authenticationInProgress() = AuthenticationInProgress;
8 | const factory AuthState.authenticationFailed({
9 | required HttpRequestFailure failure,
10 | }) = AuthenticationFailed;
11 | }
12 |
--------------------------------------------------------------------------------
/lib/features/auth/presentation/providers/providers.dart:
--------------------------------------------------------------------------------
1 | export 'auth/auth_provider.dart';
2 |
--------------------------------------------------------------------------------
/lib/features/auth/presentation/screens/screens.dart:
--------------------------------------------------------------------------------
1 | export 'login_screen.dart';
2 |
--------------------------------------------------------------------------------
/lib/features/auth/presentation/widgets/login_apple_sign_in.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/i18n/translations.g.dart';
2 | import 'package:flut_cinematic_ui/flut_cinematic_ui.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | class LoginAppleSignIn extends StatelessWidget {
6 | const LoginAppleSignIn({super.key});
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return FlutCinematicPrimaryButton(
11 | onPressed: () {},
12 | color: Palette.black,
13 | child: Row(
14 | mainAxisAlignment: MainAxisAlignment.center,
15 | children: [
16 | Assets.svgs.apple.svg(height: 24, width: 24),
17 | space12,
18 | Text(
19 | texts.auth.continueAppleID,
20 | style: context.textTheme.titleLarge?.copyWith(
21 | fontWeight: AppFontWeight.semiBold,
22 | ),
23 | ),
24 | ],
25 | ),
26 | );
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/lib/features/auth/presentation/widgets/login_email_imput.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/i18n/translations.g.dart';
2 | import 'package:flut_cinematic_ui/flut_cinematic_ui.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | class LoginEmailImput extends StatelessWidget {
6 | const LoginEmailImput({super.key, required this.emailController});
7 |
8 | final TextEditingController emailController;
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return FlutCinematicTextField(
13 | title: texts.auth.email,
14 | hintText: texts.auth.typeYourEmail,
15 | prefixIcon: FlutCinematicIcons.email,
16 | controller: emailController,
17 | autovalidateMode: AutovalidateMode.onUserInteraction,
18 | validator: (value) => FormValidator.email(
19 | value,
20 | emailInvalid: texts.auth.invalidEmail,
21 | emailRequired: texts.auth.fieldRequired,
22 | ),
23 | );
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/lib/features/auth/presentation/widgets/login_google_sign_in.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/i18n/translations.g.dart';
2 | import 'package:flut_cinematic_ui/flut_cinematic_ui.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | class LoginGoogleSignIn extends StatelessWidget {
6 | const LoginGoogleSignIn({super.key});
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return FlutCinematicPrimaryButton(
11 | onPressed: () {},
12 | color: Palette.white,
13 | child: Row(
14 | mainAxisAlignment: MainAxisAlignment.center,
15 | children: [
16 | Assets.svgs.google.svg(height: 24, width: 24),
17 | space12,
18 | Text(
19 | texts.auth.continueGoogle,
20 | style: context.textTheme.titleLarge?.copyWith(
21 | color: Palette.dark,
22 | fontWeight: AppFontWeight.semiBold,
23 | ),
24 | ),
25 | ],
26 | ),
27 | );
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/lib/features/auth/presentation/widgets/login_header.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/i18n/translations.g.dart';
2 | import 'package:flut_cinematic_ui/flut_cinematic_ui.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | class LoginHeader extends StatelessWidget {
6 | const LoginHeader({super.key});
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return Column(
11 | crossAxisAlignment: CrossAxisAlignment.stretch,
12 | children: [
13 | Text(
14 | texts.auth.readyForPopcorn,
15 | style: context.textTheme.bodyLarge,
16 | ),
17 | gap4,
18 | RichText(
19 | text: TextSpan(
20 | text: texts.auth.enterYour,
21 | style: context.textTheme.headlineLarge,
22 | children: [
23 | TextSpan(
24 | text: texts.auth.fildLoverWorld,
25 | style: context.textTheme.headlineMedium,
26 | ),
27 | ],
28 | ),
29 | ),
30 | gap20,
31 | ],
32 | );
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/lib/features/auth/presentation/widgets/login_password_imput.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/i18n/translations.g.dart';
2 | import 'package:flut_cinematic_ui/flut_cinematic_ui.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | class LoginPasswordImput extends StatelessWidget {
6 | const LoginPasswordImput({super.key, required this.passwordController});
7 |
8 | final TextEditingController passwordController;
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return FlutCinematicTextField.password(
13 | title: texts.auth.password,
14 | hintText: texts.auth.typeYourPassword,
15 | prefixIcon: FlutCinematicIcons.key,
16 | controller: passwordController,
17 | autovalidateMode: AutovalidateMode.onUserInteraction,
18 | validator: (value) => FormValidator.passwordValid(
19 | value,
20 | passwordRequired: texts.auth.fieldRequired,
21 | passwordShort: texts.auth.passwordInvalid,
22 | ),
23 | );
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/lib/features/auth/presentation/widgets/login_sign_in_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/i18n/translations.g.dart';
2 | import 'package:flut_cinematic_ui/flut_cinematic_ui.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | class LoginSignInButton extends StatelessWidget {
6 | const LoginSignInButton({super.key, required this.onPressed});
7 |
8 | final VoidCallback onPressed;
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return FlutCinematicPrimaryButton(
13 | text: texts.auth.loginNow,
14 | onPressed: onPressed,
15 | );
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/lib/features/auth/presentation/widgets/widgets.dart:
--------------------------------------------------------------------------------
1 | export 'login_apple_sign_in.dart';
2 | export 'login_email_imput.dart';
3 | export 'login_google_sign_in.dart';
4 | export 'login_header.dart';
5 | export 'login_password_imput.dart';
6 | export 'login_sign_in_button.dart';
7 |
--------------------------------------------------------------------------------
/lib/features/features.dart:
--------------------------------------------------------------------------------
1 | export 'auth/auth.dart';
2 | export 'movie/movies.dart';
3 | export 'purchase/purchase.dart';
4 | export 'seat/seat.dart';
5 |
--------------------------------------------------------------------------------
/lib/features/movie/movies.dart:
--------------------------------------------------------------------------------
1 | export 'presentation/presentation.dart';
2 |
--------------------------------------------------------------------------------
/lib/features/movie/presentation/enums/enums.dart:
--------------------------------------------------------------------------------
1 | export 'movie_type.dart';
2 |
--------------------------------------------------------------------------------
/lib/features/movie/presentation/enums/movie_type.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/i18n/translations.g.dart';
2 |
3 | enum MovieType {
4 | nowPlaying(),
5 | popular(),
6 | upcoming();
7 |
8 | const MovieType();
9 |
10 | String get title {
11 | switch (this) {
12 | case MovieType.nowPlaying:
13 | return texts.movie.inPremiere;
14 | case MovieType.popular:
15 | return texts.movie.popular;
16 | case MovieType.upcoming:
17 | return texts.movie.upcoming;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/features/movie/presentation/extensions/duration_x.dart:
--------------------------------------------------------------------------------
1 | extension DurationX on Duration {
2 | String get remainingMinutes {
3 | String twoDigits(int n) => n.toString().padLeft(2, '0');
4 | String oneDigits(int n) => n.toString().padLeft(1, '0');
5 | final hours = oneDigits(inHours.remainder(60));
6 | final minutes = twoDigits(inMinutes.remainder(60));
7 | return '${hours}hrs ${minutes}min';
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/lib/features/movie/presentation/extensions/extensions.dart:
--------------------------------------------------------------------------------
1 | export 'duration_x.dart';
2 | export 'movie_x.dart';
3 | export 'video_x.dart';
4 |
--------------------------------------------------------------------------------
/lib/features/movie/presentation/extensions/movie_x.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic_domain/flut_cinematic_domain.dart';
2 |
3 | extension MovieX on Movie {
4 | String get _baseImageUrl => const String.fromEnvironment('baseImageUrl');
5 | String get poster => '$_baseImageUrl/w780/$posterPath';
6 | String get backdrop => '$_baseImageUrl/w780/$backdropPath';
7 | }
8 |
--------------------------------------------------------------------------------
/lib/features/movie/presentation/extensions/video_x.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic_domain/flut_cinematic_domain.dart';
2 |
3 | extension VideoX on Video {
4 | Uri get trailer => Uri.https('youtu.be', key);
5 |
6 | bool get youtube => site == 'YouTube';
7 | }
8 |
--------------------------------------------------------------------------------
/lib/features/movie/presentation/presentation.dart:
--------------------------------------------------------------------------------
1 | export 'enums/enums.dart';
2 | export 'extensions/extensions.dart';
3 | export 'providers/providers.dart';
4 | export 'screens/screens.dart';
5 | export 'widgets/widgets.dart';
6 |
--------------------------------------------------------------------------------
/lib/features/movie/presentation/providers/movie/movie_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/lib.dart';
2 | import 'package:flut_cinematic_common/flut_cinematic_common.dart';
3 | import 'package:flut_cinematic_domain/flut_cinematic_domain.dart';
4 | import 'package:riverpod/riverpod.dart';
5 |
6 | final movieProvider = StateNotifierProviderFamily(
7 | (ref, arg) => MovieProvider(
8 | arg,
9 | movieRepository: ref.read(Repositories.movie),
10 | )..loadMovie(),
11 | );
12 |
13 | class MovieProvider extends StateNotifier {
14 | MovieProvider(
15 | super.state, {
16 | required IMovieRepository movieRepository,
17 | }) : _movieRepository = movieRepository;
18 |
19 | final IMovieRepository _movieRepository;
20 |
21 | Future loadMovie() async {
22 | final result = await _movieRepository.movie(movieId: state.id);
23 | state = switch (result) {
24 | Right(value: final movie) => movie.copyWith(tag: state.tag),
25 | Left() => state,
26 | };
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/lib/features/movie/presentation/providers/movies/movies_state.dart:
--------------------------------------------------------------------------------
1 | part of 'movies_provider.dart';
2 |
3 | @freezed
4 | class MoviesState with _$MoviesState {
5 | const factory MoviesState.loading() = _MoviesLoadingState;
6 | const factory MoviesState.loaded({
7 | @Default([]) List movies,
8 | @Default(false) bool loadingMore,
9 | required MovieRequest movieRequest,
10 | }) = MoviesLoadedState;
11 | const factory MoviesState.error({
12 | required HttpRequestFailure failure,
13 | }) = MoviesErrorState;
14 | }
15 |
--------------------------------------------------------------------------------
/lib/features/movie/presentation/providers/providers.dart:
--------------------------------------------------------------------------------
1 | export 'movie/movie_provider.dart';
2 | export 'movies/movies_provider.dart';
3 | export 'search/search_provider.dart';
4 | export 'video/video_provider.dart';
5 |
--------------------------------------------------------------------------------
/lib/features/movie/presentation/providers/search/search_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/core/core.dart';
2 | import 'package:flut_cinematic_common/flut_cinematic_common.dart';
3 | import 'package:flut_cinematic_domain/flut_cinematic_domain.dart';
4 | import 'package:freezed_annotation/freezed_annotation.dart';
5 | import 'package:riverpod/riverpod.dart';
6 |
7 | part 'search_provider.freezed.dart';
8 | part 'search_state.dart';
9 |
10 | final searchProvider =
11 | StateNotifierProvider.autoDispose(
12 | (ref) => SearchProvider(
13 | const SearchState.initial(),
14 | movieRepository: ref.read(Repositories.movie),
15 | ),
16 | );
17 |
18 | class SearchProvider extends StateNotifier {
19 | SearchProvider(
20 | super.state, {
21 | required IMovieRepository movieRepository,
22 | }) : _movieRepository = movieRepository;
23 | final IMovieRepository _movieRepository;
24 |
25 | Future search(String query) async {
26 | if (query.isEmpty) {
27 | state = const SearchState.initial();
28 | } else {
29 | state = const SearchState.searching();
30 | final request = MovieRequest(query: query, includeAdult: true);
31 | final result = await _movieRepository.search(request: request);
32 | state = switch (result) {
33 | Right(value: final moviesResponse) => SearchState.result(
34 | movies: moviesResponse.movies,
35 | ),
36 | Left(value: final failure) => SearchState.error(failure: failure),
37 | };
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/features/movie/presentation/providers/search/search_state.dart:
--------------------------------------------------------------------------------
1 | part of 'search_provider.dart';
2 |
3 | @freezed
4 | class SearchState with _$SearchState {
5 | const factory SearchState.initial() = _SearchInitialState;
6 | const factory SearchState.searching() = SearchingState;
7 | const factory SearchState.result({
8 | @Default([]) List movies,
9 | }) = SearchResultState;
10 | const factory SearchState.error({
11 | required HttpRequestFailure failure,
12 | }) = SearchErrorState;
13 | }
14 |
--------------------------------------------------------------------------------
/lib/features/movie/presentation/providers/video/video_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flut_cinematic/core/core.dart';
2 | import 'package:flut_cinematic/features/features.dart';
3 | import 'package:flut_cinematic_common/flut_cinematic_common.dart';
4 | import 'package:flut_cinematic_domain/flut_cinematic_domain.dart';
5 | import 'package:flut_cinematic_ui/flut_cinematic_ui.dart';
6 | import 'package:freezed_annotation/freezed_annotation.dart';
7 | import 'package:riverpod/riverpod.dart';
8 |
9 | part 'video_provider.freezed.dart';
10 | part 'video_state.dart';
11 |
12 | final videoProvider =
13 | StateNotifierProviderFamily(
14 | (ref, movieId) => VideoProvider(
15 | VideoState.loading(),
16 | movieRepository: ref.read(Repositories.movie),
17 | movieId: movieId,
18 | )..loadVideos(),
19 | );
20 |
21 | class VideoProvider extends StateNotifier {
22 | VideoProvider(
23 | super.state, {
24 | required IMovieRepository movieRepository,
25 | required int movieId,
26 | }) : _movieRepository = movieRepository,
27 | _movieId = movieId;
28 |
29 | final IMovieRepository _movieRepository;
30 | final int _movieId;
31 |
32 | Future loadVideos() async {
33 | final result = await _movieRepository.videos(movieId: _movieId);
34 | state = switch (result) {
35 | Right(value: final response) => VideoState.loaded(
36 | videos: response.videos.whereList