├── .fvm
├── flutter_sdk
└── fvm_config.json
├── .github
├── ISSUE_TEMPLATE.md
├── PULL_REQUEST_TEMPLATE.md
└── workflows
│ └── build.yml
├── .gitignore
├── .metadata
├── .run
├── production.run.xml
└── staging.run.xml
├── .vscode
└── launch.json
├── CONTRIBUTING.md
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── ps
│ │ │ │ └── app
│ │ │ │ └── bond
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-hdpi
│ │ │ └── ic_stat.png
│ │ │ ├── drawable-mdpi
│ │ │ └── ic_stat.png
│ │ │ ├── drawable-v21
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-xhdpi
│ │ │ └── ic_stat.png
│ │ │ ├── drawable-xxhdpi
│ │ │ └── ic_stat.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ └── ic_stat.png
│ │ │ ├── drawable
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── launcher_icon.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── launcher_icon.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── launcher_icon.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── launcher_icon.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── launcher_icon.png
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── production
│ │ ├── google-services.json
│ │ └── res
│ │ │ ├── drawable-hdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── splash.png
│ │ │ ├── drawable-mdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── splash.png
│ │ │ ├── drawable-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-xhdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── splash.png
│ │ │ ├── drawable-xxhdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── splash.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── splash.png
│ │ │ ├── drawable
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ └── launcher_icon.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── launcher_icon.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── launcher_icon.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── launcher_icon.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── launcher_icon.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── launcher_icon.png
│ │ │ ├── values-v31
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ ├── profile
│ │ └── AndroidManifest.xml
│ │ └── staging
│ │ ├── google-services.json
│ │ └── res
│ │ ├── drawable-hdpi
│ │ ├── ic_launcher_foreground.png
│ │ └── splash.png
│ │ ├── drawable-mdpi
│ │ ├── ic_launcher_foreground.png
│ │ └── splash.png
│ │ ├── drawable-v21
│ │ ├── background.png
│ │ └── launch_background.xml
│ │ ├── drawable-xhdpi
│ │ ├── ic_launcher_foreground.png
│ │ └── splash.png
│ │ ├── drawable-xxhdpi
│ │ ├── ic_launcher_foreground.png
│ │ └── splash.png
│ │ ├── drawable-xxxhdpi
│ │ ├── ic_launcher_foreground.png
│ │ └── splash.png
│ │ ├── drawable
│ │ ├── background.png
│ │ └── launch_background.xml
│ │ ├── mipmap-anydpi-v26
│ │ └── launcher_icon.xml
│ │ ├── mipmap-hdpi
│ │ └── launcher_icon.png
│ │ ├── mipmap-mdpi
│ │ └── launcher_icon.png
│ │ ├── mipmap-xhdpi
│ │ └── launcher_icon.png
│ │ ├── mipmap-xxhdpi
│ │ └── launcher_icon.png
│ │ ├── mipmap-xxxhdpi
│ │ └── launcher_icon.png
│ │ ├── values-v31
│ │ └── styles.xml
│ │ └── values
│ │ ├── colors.xml
│ │ └── styles.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── icons
│ ├── app-icon-staging.png
│ ├── app-icon.png
│ ├── close.svg
│ └── share.svg
└── images
│ ├── app_logo.svg
│ ├── force_update.png
│ ├── home_bond.png
│ ├── home_bond_arabic.png
│ ├── home_bond_arabic_dark.png
│ ├── home_bond_dark.png
│ ├── splash_logo-staging.png
│ └── splash_logo.png
├── env.example.json
├── firebase.json
├── firebase_config.bash
├── flutter_launcher_icons-production.yaml
├── flutter_launcher_icons-staging.yaml
├── flutter_native_splash-production.yaml
├── flutter_native_splash-staging.yaml
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Podfile
├── Podfile.lock
├── Production
│ └── GoogleService-Info.plist
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── Production.xcscheme
│ │ └── Staging.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
├── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ ├── AppIcon-production.appiconset
│ │ │ ├── AppIcon-production-1024x1024@1x.png
│ │ │ ├── AppIcon-production-20x20@1x.png
│ │ │ ├── AppIcon-production-20x20@2x.png
│ │ │ ├── AppIcon-production-20x20@3x.png
│ │ │ ├── AppIcon-production-29x29@1x.png
│ │ │ ├── AppIcon-production-29x29@2x.png
│ │ │ ├── AppIcon-production-29x29@3x.png
│ │ │ ├── AppIcon-production-40x40@1x.png
│ │ │ ├── AppIcon-production-40x40@2x.png
│ │ │ ├── AppIcon-production-40x40@3x.png
│ │ │ ├── AppIcon-production-50x50@1x.png
│ │ │ ├── AppIcon-production-50x50@2x.png
│ │ │ ├── AppIcon-production-57x57@1x.png
│ │ │ ├── AppIcon-production-57x57@2x.png
│ │ │ ├── AppIcon-production-60x60@2x.png
│ │ │ ├── AppIcon-production-60x60@3x.png
│ │ │ ├── AppIcon-production-72x72@1x.png
│ │ │ ├── AppIcon-production-72x72@2x.png
│ │ │ ├── AppIcon-production-76x76@1x.png
│ │ │ ├── AppIcon-production-76x76@2x.png
│ │ │ ├── AppIcon-production-83.5x83.5@2x.png
│ │ │ └── Contents.json
│ │ ├── AppIcon-staging.appiconset
│ │ │ ├── AppIcon-staging-1024x1024@1x.png
│ │ │ ├── AppIcon-staging-20x20@1x.png
│ │ │ ├── AppIcon-staging-20x20@2x.png
│ │ │ ├── AppIcon-staging-20x20@3x.png
│ │ │ ├── AppIcon-staging-29x29@1x.png
│ │ │ ├── AppIcon-staging-29x29@2x.png
│ │ │ ├── AppIcon-staging-29x29@3x.png
│ │ │ ├── AppIcon-staging-40x40@1x.png
│ │ │ ├── AppIcon-staging-40x40@2x.png
│ │ │ ├── AppIcon-staging-40x40@3x.png
│ │ │ ├── AppIcon-staging-50x50@1x.png
│ │ │ ├── AppIcon-staging-50x50@2x.png
│ │ │ ├── AppIcon-staging-57x57@1x.png
│ │ │ ├── AppIcon-staging-57x57@2x.png
│ │ │ ├── AppIcon-staging-60x60@2x.png
│ │ │ ├── AppIcon-staging-60x60@3x.png
│ │ │ ├── AppIcon-staging-72x72@1x.png
│ │ │ ├── AppIcon-staging-72x72@2x.png
│ │ │ ├── AppIcon-staging-76x76@1x.png
│ │ │ ├── AppIcon-staging-76x76@2x.png
│ │ │ ├── AppIcon-staging-83.5x83.5@2x.png
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── LaunchBackgroundProduction.imageset
│ │ │ ├── Contents.json
│ │ │ └── background.png
│ │ ├── LaunchBackgroundStaging.imageset
│ │ │ ├── Contents.json
│ │ │ └── background.png
│ │ ├── LaunchImage.imageset
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ └── README.md
│ │ ├── LaunchImageProduction.imageset
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ └── LaunchImage@3x.png
│ │ └── LaunchImageStaging.imageset
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ └── LaunchImage@3x.png
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ ├── LaunchScreenProduction.storyboard
│ │ ├── LaunchScreenStaging.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
├── Staging
│ └── GoogleService-Info.plist
├── firebase_app_id_file_production.json
├── firebase_app_id_file_staging.json
├── production
│ └── GoogleService-Info.plist
└── staging
│ └── GoogleService-Info.plist
├── l10n.yaml
├── lib
├── app
│ ├── app.dart
│ ├── app_run_tasks.dart
│ ├── default_firebase_options.dart
│ └── routes.dart
├── bond_app.dart
├── config
│ ├── analytics.dart
│ ├── api.dart
│ ├── cache.dart
│ ├── configs.dart
│ ├── environments.dart
│ └── notification.dart
├── core
│ ├── app_analytics.dart
│ ├── app_analytics_providers
│ │ └── firebase_analytics_provider.dart
│ ├── app_localizations.dart
│ ├── app_notification_providers.dart
│ ├── app_review.dart
│ ├── app_theme.dart
│ ├── app_utils.dart
│ ├── app_widgets.dart
│ ├── cache
│ │ └── secure_storage_cache_driver.dart
│ ├── localizations
│ │ └── app_localizations_extension.dart
│ ├── notifications
│ │ ├── notification_center_remote_data_source.dart
│ │ └── push_notifications_providers
│ │ │ └── firebase_messaging_push_notification_provider.dart
│ ├── resources
│ │ ├── app_assets.dart
│ │ └── app_icons.dart
│ ├── route_helpers.dart
│ ├── route_helpers
│ │ └── modal_bottom_sheet_page.dart
│ ├── theme
│ │ ├── app_dark_theme_data.dart
│ │ ├── app_light_theme_data.dart
│ │ └── app_text_theme.dart
│ ├── utils
│ │ └── device_info.dart
│ └── widgets
│ │ ├── app_button.dart
│ │ └── bond_pop_menu
│ │ ├── bond_pop_menu_button.dart
│ │ └── bond_popup_menu_item.dart
├── features
│ ├── app
│ │ ├── app_providers.dart
│ │ └── notifiers
│ │ │ ├── local_notifier.dart
│ │ │ └── theme_notifier.dart
│ ├── auth
│ │ ├── auth.dart
│ │ ├── auth_service_provider.dart
│ │ ├── data
│ │ │ ├── api.dart
│ │ │ ├── errors
│ │ │ │ ├── validation_error.dart
│ │ │ │ └── validation_error.g.dart
│ │ │ ├── events
│ │ │ │ ├── sign_in_event.dart
│ │ │ │ ├── sign_out_event.dart
│ │ │ │ └── sign_up_event.dart
│ │ │ └── models
│ │ │ │ ├── user.dart
│ │ │ │ ├── user.g.dart
│ │ │ │ ├── user_meta.dart
│ │ │ │ └── user_meta.g.dart
│ │ ├── presentation
│ │ │ ├── login_page.dart
│ │ │ ├── providers
│ │ │ │ ├── login_form_provider.dart
│ │ │ │ └── register_form_provider.dart
│ │ │ ├── register_page.dart
│ │ │ └── views
│ │ │ │ ├── login
│ │ │ │ ├── login_form.dart
│ │ │ │ └── new_account_view.dart
│ │ │ │ └── register
│ │ │ │ └── register_form.dart
│ │ └── routes.dart
│ ├── main
│ │ ├── presentation
│ │ │ └── main_page.dart
│ │ └── routes.dart
│ ├── more
│ │ └── presentation
│ │ │ └── more_page.dart
│ ├── notification
│ │ ├── presentations
│ │ │ └── ui
│ │ │ │ ├── notifications_page.dart
│ │ │ │ └── widgets
│ │ │ │ ├── badge_unread_notification.dart
│ │ │ │ ├── header_title_image.dart
│ │ │ │ └── notification_item.dart
│ │ └── routes.dart
│ ├── post
│ │ ├── data
│ │ │ ├── api.dart
│ │ │ └── models
│ │ │ │ ├── author.dart
│ │ │ │ ├── post.dart
│ │ │ │ ├── post.g.dart
│ │ │ │ └── urls.dart
│ │ ├── post_service_provider.dart
│ │ ├── presentations
│ │ │ ├── post_details_page.dart
│ │ │ ├── posts_page.dart
│ │ │ ├── providers
│ │ │ │ ├── list_state.dart
│ │ │ │ ├── post_provider.dart
│ │ │ │ └── posts_provider.dart
│ │ │ └── views
│ │ │ │ ├── home_app_bar.dart
│ │ │ │ ├── post_item.dart
│ │ │ │ └── share_button.dart
│ │ └── routes.dart
│ └── update_app
│ │ ├── data
│ │ ├── models
│ │ │ ├── current_version.dart
│ │ │ ├── platform_version.dart
│ │ │ ├── platform_version.g.dart
│ │ │ └── update_app_default_value.dart
│ │ └── update_app_service.dart
│ │ ├── presentations
│ │ └── page
│ │ │ ├── soft_update_page.dart
│ │ │ └── update_app_page.dart
│ │ └── routes.dart
├── firebase_options_production.dart
├── firebase_options_staging.dart
├── l10n
│ ├── app_ar.arb
│ └── app_en.arb
├── main.dart
└── providers
│ ├── analytics_service_provider.dart
│ ├── api_service_provider.dart
│ ├── app_service_provider.dart
│ ├── cache_service_provider.dart
│ ├── firebase_service_provider.dart
│ ├── forms_service_provider.dart
│ └── notifications_service_provider.dart
├── macos
├── .gitignore
├── Flutter
│ ├── Flutter-Debug.xcconfig
│ ├── Flutter-Release.xcconfig
│ └── GeneratedPluginRegistrant.swift
├── Podfile
├── Podfile.lock
├── Production
│ └── GoogleService-Info.plist
├── Runner.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ ├── AppIcon-production.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── app_icon_1024.png
│ │ │ ├── app_icon_128.png
│ │ │ ├── app_icon_16.png
│ │ │ ├── app_icon_256.png
│ │ │ ├── app_icon_32.png
│ │ │ ├── app_icon_512.png
│ │ │ └── app_icon_64.png
│ │ ├── AppIcon-staging.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── app_icon_1024.png
│ │ │ ├── app_icon_128.png
│ │ │ ├── app_icon_16.png
│ │ │ ├── app_icon_256.png
│ │ │ ├── app_icon_32.png
│ │ │ ├── app_icon_512.png
│ │ │ └── app_icon_64.png
│ │ └── Contents.json
│ ├── Base.lproj
│ │ └── MainMenu.xib
│ ├── Configs
│ │ ├── AppInfo.xcconfig
│ │ ├── Debug.xcconfig
│ │ ├── Release.xcconfig
│ │ └── Warnings.xcconfig
│ ├── DebugProfile.entitlements
│ ├── Info.plist
│ ├── MainFlutterWindow.swift
│ ├── Release.entitlements
│ └── RunnerProfile Staging.entitlements
├── Staging
│ └── GoogleService-Info.plist
├── firebase_app_id_file.json
├── production
│ └── GoogleService-Info.plist
└── staging
│ └── GoogleService-Info.plist
├── pubspec.lock
├── pubspec.yaml
├── test
└── example_test.dart
└── web
├── favicon.png
├── icons
├── Icon-192.png
├── Icon-512.png
├── Icon-maskable-192.png
└── Icon-maskable-512.png
├── index.html
└── manifest.json
/.fvm/flutter_sdk:
--------------------------------------------------------------------------------
1 | D:/Users/salahamassi/fvm/versions/3.10.4
--------------------------------------------------------------------------------
/.fvm/fvm_config.json:
--------------------------------------------------------------------------------
1 | {
2 | "flutterSdkVersion": "3.19.0",
3 | "flavors": {}
4 | }
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
9 |
10 | ## Description
11 |
12 |
13 | ## Steps to Reproduce
14 |
15 |
16 | 1. Step 1
17 | 2. Step 2
18 | 3. ...
19 |
20 | ## Expected Behavior
21 |
22 |
23 | ## Actual Behavior
24 |
25 |
26 | ## Screenshots/Code Snippets
27 |
28 |
29 | ## Version Info
30 | Please paste the output of running `flutter doctor -v` here (available from the command
31 | line or from `Tools > Flutter > Flutter Doctor`). It will provide the version of the
32 | Flutter framework as well as of the IntelliJ plugin.
33 | | | |
34 | |-------------------------|---------------------------|
35 | | Flutter version: | |
36 | | Android toolchain: | |
37 | | Xcode for iOS/macOS: | |
38 | | Chrome for web: | |
39 | | Android Studio: | |
40 | | VS Code: | |
41 | | Connected devices: | |
42 | | Issues summary: | |
43 |
44 | ## Related Issues/PRs
45 |
46 |
47 | ## Possible Solution
48 |
49 |
50 | ## Additional Information
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | ## Pull Request Description
2 |
3 | **Summary:** [Provide a brief summary of the changes introduced by this pull request.]
4 |
5 | **Related Issue:** [Specify the issue number or describe the problem that this pull request addresses.]
6 |
7 | ## Proposed Changes
8 |
9 | **Description:** [Provide a detailed description of the changes made in this pull request.]
10 |
11 | **Motivation and Context:** [Explain the motivation behind these changes and the impact they have on the project.]
12 |
13 | ## Checklist
14 |
15 | Please review and check the following items before submitting your pull request:
16 |
17 | - [ ] I have executed the command `flutter pub run build_runner build` to generate the necessary auto routes files.
18 | - [ ] I have verified that the auto route generation did not introduce any errors or warnings.
19 | - [ ] I have tested the changes locally and they are functioning as expected.
20 | - [ ] My code follows the project's coding style and guidelines.
21 | - [ ] All existing and new tests are passing.
22 | - [ ] I have added necessary documentation or updated existing documentation (if applicable).
23 | - [ ] I have added appropriate unit tests or updated existing tests (if applicable).
24 | - [ ] My commits are descriptive and follow the project's commit message conventions.
25 | - [ ] I have rebased my branch on the latest `main` branch.
26 |
27 | ## Screenshots (if applicable)
28 |
29 | **Before:**
30 | [Add screenshots or GIFs showing the state before the changes (if applicable).]
31 |
32 | **After:**
33 | [Add screenshots or GIFs showing the state after the changes (if applicable).]
34 |
35 |
--------------------------------------------------------------------------------
/.github/workflows/build.yml:
--------------------------------------------------------------------------------
1 | name: build
2 |
3 | on:
4 | push:
5 | branches: [ "main" ]
6 | pull_request:
7 | branches: [ "main" ]
8 |
9 | jobs:
10 | build-and-test:
11 |
12 | runs-on: macos-latest
13 |
14 | steps:
15 | - uses: actions/checkout@v3
16 | - uses: actions/setup-java@v2
17 | with:
18 | distribution: 'zulu'
19 | java-version: '11'
20 | - uses: subosito/flutter-action@v2
21 | with:
22 | channel: 'stable'
23 | cache: true
24 |
25 | - name: Create env file
26 | env:
27 | API_BASE_URL: ${{ secrets.API_BASE_URL }}
28 | CONNECT_TIMEOUT: 100000
29 | SEND_TIMEOUT: 1000000
30 | RECEIVE_TIMEOUT: 1000000
31 | RECEIVE_DATA_WHEN_STATUS_ERROR: true
32 | run: |
33 | echo "{" >> .env.json
34 | echo "API_BASE_URL:$API_BASE_URL," >> .env.json
35 | echo "CONNECT_TIMEOUT:$CONNECT_TIMEOUT," >> .env.json
36 | echo "SEND_TIMEOUT:$SEND_TIMEOUT," >> .env.json
37 | echo "RECEIVE_TIMEOUT:$RECEIVE_TIMEOUT," >> .env.json
38 | echo "RECEIVE_DATA_WHEN_STATUS_ERROR:$RECEIVE_DATA_WHEN_STATUS_ERROR" >> .env.json
39 | echo "}" >> .env.json
40 |
41 | - name: Create Staging env file
42 | env:
43 | API_BASE_URL: ${{ secrets.STAGING_API_BASE_URL}}
44 | CONNECT_TIMEOUT: 100000
45 | SEND_TIMEOUT: 1000000
46 | RECEIVE_TIMEOUT: 1000000
47 | RECEIVE_DATA_WHEN_STATUS_ERROR: true
48 | run: |
49 | echo "{" >> .env.staging.json
50 | echo "API_BASE_URL:$API_BASE_URL," >> .env.staging.json
51 | echo "CONNECT_TIMEOUT:$CONNECT_TIMEOUT," >> .env.staging.json
52 | echo "SEND_TIMEOUT:$SEND_TIMEOUT," >> .env.staging.json
53 | echo "RECEIVE_TIMEOUT:$RECEIVE_TIMEOUT," >> .env.staging.json
54 | echo "RECEIVE_DATA_WHEN_STATUS_ERROR:$RECEIVE_DATA_WHEN_STATUS_ERROR" >> .env.staging.json
55 | echo "}" >> .env.staging.json
56 |
57 | - name: Install Dependencies
58 | run: flutter pub get
59 |
60 | - name: Analyze
61 | run: flutter analyze lib
62 |
63 | - name: Test
64 | run: flutter test
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 |
12 | # IntelliJ related
13 | *.iml
14 | *.ipr
15 | *.iws
16 | .idea/
17 |
18 | # The .vscode folder contains launch configuration and tasks you configure in
19 | # VS Code which you may wish to be included in version control, so this line
20 | # is commented out by default.
21 | #.vscode/
22 |
23 | # Flutter/Dart/Pub related
24 | **/doc/api/
25 | **/ios/Flutter/.last_build_id
26 | .dart_tool/
27 | .flutter-plugins
28 | .flutter-plugins-dependencies
29 | .packages
30 | .pub-cache/
31 | .pub/
32 | /build/
33 |
34 | # Web related
35 | lib/generated_plugin_registrant.dart
36 |
37 | # Symbolication related
38 | app.*.symbols
39 |
40 | # Obfuscation related
41 | app.*.map.json
42 |
43 | # Android Studio will place build artifacts here
44 | /android/app/debug
45 | /android/app/profile
46 | /android/app/release
47 |
48 | .mason
49 | mason-lock.json
50 | env.json
51 | env.staging.json
52 | /env.staging.json
53 |
--------------------------------------------------------------------------------
/.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.
5 |
6 | version:
7 | revision: 682aa387cfe4fbd71ccd5418b2c2a075729a1c66
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: 682aa387cfe4fbd71ccd5418b2c2a075729a1c66
17 | base_revision: 682aa387cfe4fbd71ccd5418b2c2a075729a1c66
18 | - platform: web
19 | create_revision: 682aa387cfe4fbd71ccd5418b2c2a075729a1c66
20 | base_revision: 682aa387cfe4fbd71ccd5418b2c2a075729a1c66
21 |
22 | # User provided section
23 |
24 | # List of Local paths (relative to this file) that should be
25 | # ignored by the migrate tool.
26 | #
27 | # Files that are not part of the templates will be ignored by default.
28 | unmanaged_files:
29 | - 'lib/main.dart'
30 | - 'ios/Runner.xcodeproj/project.pbxproj'
31 |
--------------------------------------------------------------------------------
/.run/production.run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.run/staging.run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "name": "Flutter: Run production",
6 | "request": "launch",
7 | "type": "dart",
8 | "program": "${workspaceFolder}/lib/main.dart",
9 | "args": [
10 | "--flavor", "Production",
11 | "--dart-define-from-file=env.json"
12 | ]
13 | },
14 | {
15 | "name": "Flutter: Run staging",
16 | "request": "launch",
17 | "type": "dart",
18 | "program": "${workspaceFolder}/lib/main.dart",
19 | "args": [
20 | "--flavor", "Staging",
21 | "--dart-define-from-file=env.staging.json"
22 | ]
23 | }
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 |
2 | Please review our Contributing Guidelines for detailed instructions on contributing to Flutter Bond. We encourage contributions in the form of bug fixes, new features, and improvements to the codebase.
3 |
4 | ### Code Style
5 |
6 | We follow the coding guidelines outlined in the Flutter Style Guide. Consistent code style helps maintain readability and collaboration.
7 |
8 | ### Submitting a Pull Request
9 |
10 | When you're ready to submit your contribution:
11 |
12 | 1. **Create a New Branch:** Create a new branch for your changes:
13 |
14 | \```bash
15 | git checkout -b your-branch-name
16 | \```
17 |
18 | 2. **Make Changes and Commit:** Make your changes, commit them with a meaningful message:
19 |
20 | \```bash
21 | git add .
22 | git commit -m "Your detailed commit message"
23 | \```
24 |
25 | 3. **Push to Your Fork:** Push your changes to your forked repository:
26 |
27 | \```bash
28 | git push origin your-branch-name
29 | \```
30 |
31 | 4. **Open a Pull Request:** Visit the original Flutter Bond repository and open a new pull request. We'll review your changes and provide feedback.
32 | EOF
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | # This file configures the analyzer, which statically analyzes Dart code to
2 | # check for errors, warnings, and lints.
3 | #
4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled
5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
6 | # invoked from the command line by running `flutter analyze`.
7 |
8 | # The following line activates a set of recommended lints for Flutter apps,
9 | # packages, and plugins designed to encourage good coding practices.
10 | include: package:flutter_lints/flutter.yaml
11 |
12 | linter:
13 | # The lint rules applied to this project can be customized in the
14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml`
15 | # included above or to enable additional rules. A list of all available lints
16 | # and their documentation is published at
17 | # https://dart-lang.github.io/linter/lints/index.html.
18 | #
19 | # Instead of disabling a lint rule for the entire project in the
20 | # section below, it can also be suppressed for a single line of code
21 | # or a specific dart file by using the `// ignore: name_of_lint` and
22 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file
23 | # producing the lint.
24 | rules:
25 | # avoid_print: false # Uncomment to disable the `avoid_print` rule
26 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
27 |
28 | # Additional information about this file can be found at
29 | # https://dart.dev/guides/language/analysis-options
30 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
14 |
18 |
22 |
23 |
24 |
25 |
26 |
27 |
29 |
32 |
33 |
36 |
37 |
40 |
41 |
44 |
45 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/ps/app/bond/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package ps.app.bond
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/main/res/drawable-hdpi/ic_stat.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/main/res/drawable-mdpi/ic_stat.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/main/res/drawable-xhdpi/ic_stat.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/main/res/drawable-xxhdpi/ic_stat.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/main/res/drawable-xxxhdpi/ic_stat.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/main/res/mipmap-hdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/main/res/mipmap-mdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #322d78
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Bond
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/production/google-services.json:
--------------------------------------------------------------------------------
1 | {
2 | "project_info": {
3 | "project_number": "1077101979846",
4 | "project_id": "flutter-bond-8ae02",
5 | "storage_bucket": "flutter-bond-8ae02.appspot.com"
6 | },
7 | "client": [
8 | {
9 | "client_info": {
10 | "mobilesdk_app_id": "1:1077101979846:android:00afb3c0b4d1b8ae3a0fc7",
11 | "android_client_info": {
12 | "package_name": "ps.app.bond"
13 | }
14 | },
15 | "oauth_client": [],
16 | "api_key": [
17 | {
18 | "current_key": "AIzaSyCabR-NAV535DJ8NjcQhhllO3qR11q7mIM"
19 | }
20 | ],
21 | "services": {
22 | "appinvite_service": {
23 | "other_platform_oauth_client": []
24 | }
25 | }
26 | }
27 | ],
28 | "configuration_version": "1"
29 | }
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/drawable-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable-hdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/drawable-hdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/drawable-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable-mdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/drawable-mdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/drawable-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/drawable-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable-xhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/drawable-xhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/drawable-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable-xxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/drawable-xxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/drawable-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable-xxxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/drawable-xxxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/drawable/background.png
--------------------------------------------------------------------------------
/android/app/src/production/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/production/res/mipmap-anydpi-v26/launcher_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/app/src/production/res/mipmap-hdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/mipmap-hdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/production/res/mipmap-mdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/mipmap-mdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/production/res/mipmap-xhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/mipmap-xhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/production/res/mipmap-xxhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/mipmap-xxhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/production/res/mipmap-xxxhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/production/res/mipmap-xxxhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/production/res/values-v31/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/production/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #ffffff
4 |
--------------------------------------------------------------------------------
/android/app/src/production/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
18 |
21 |
22 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/staging/google-services.json:
--------------------------------------------------------------------------------
1 | {
2 | "project_info": {
3 | "project_number": "390157281889",
4 | "project_id": "flutter-bond-staging-7dd42",
5 | "storage_bucket": "flutter-bond-staging-7dd42.appspot.com"
6 | },
7 | "client": [
8 | {
9 | "client_info": {
10 | "mobilesdk_app_id": "1:390157281889:android:bf4d85c3c9a51044ab9820",
11 | "android_client_info": {
12 | "package_name": "ps.app.bond.staging"
13 | }
14 | },
15 | "oauth_client": [],
16 | "api_key": [
17 | {
18 | "current_key": "AIzaSyA-AjzVELSPttuIp2k6kydk0RX-DORqPpg"
19 | }
20 | ],
21 | "services": {
22 | "appinvite_service": {
23 | "other_platform_oauth_client": []
24 | }
25 | }
26 | }
27 | ],
28 | "configuration_version": "1"
29 | }
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/drawable-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable-hdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/drawable-hdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/drawable-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable-mdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/drawable-mdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/drawable-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/drawable-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable-xhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/drawable-xhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/drawable-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable-xxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/drawable-xxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/drawable-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable-xxxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/drawable-xxxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/drawable/background.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-anydpi-v26/launcher_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-hdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/mipmap-hdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-mdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/mipmap-mdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-xhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/mipmap-xhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-xxhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/mipmap-xxhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/mipmap-xxxhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/android/app/src/staging/res/mipmap-xxxhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/staging/res/values-v31/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/staging/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #EB5C6C
4 |
--------------------------------------------------------------------------------
/android/app/src/staging/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
18 |
21 |
22 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | }
6 | }
7 |
8 | rootProject.buildDir = '../build'
9 | subprojects {
10 | project.buildDir = "${rootProject.buildDir}/${project.name}"
11 | }
12 | subprojects {
13 | project.evaluationDependsOn(':app')
14 | }
15 |
16 | tasks.register("clean", Delete) {
17 | delete rootProject.buildDir
18 | }
19 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx4608m
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip
6 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | def flutterSdkPath = {
3 | def properties = new Properties()
4 | file("local.properties").withInputStream { properties.load(it) }
5 | def flutterSdkPath = properties.getProperty("flutter.sdk")
6 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
7 | return flutterSdkPath
8 | }
9 | settings.ext.flutterSdkPath = flutterSdkPath()
10 |
11 | includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
12 |
13 | repositories {
14 | google()
15 | mavenCentral()
16 | gradlePluginPortal()
17 | }
18 | }
19 |
20 | plugins {
21 | id "dev.flutter.flutter-plugin-loader" version "1.0.0"
22 | id "com.android.application" version "8.1.0" apply false
23 | id "org.jetbrains.kotlin.android" version "1.8.22" apply false
24 | id "com.google.gms.google-services" version "4.4.0" apply false
25 | id "com.google.firebase.crashlytics" version "2.9.9" apply false
26 | }
27 |
28 | include ":app"
29 |
--------------------------------------------------------------------------------
/assets/icons/app-icon-staging.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/assets/icons/app-icon-staging.png
--------------------------------------------------------------------------------
/assets/icons/app-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/assets/icons/app-icon.png
--------------------------------------------------------------------------------
/assets/icons/close.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/share.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/assets/images/force_update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/assets/images/force_update.png
--------------------------------------------------------------------------------
/assets/images/home_bond.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/assets/images/home_bond.png
--------------------------------------------------------------------------------
/assets/images/home_bond_arabic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/assets/images/home_bond_arabic.png
--------------------------------------------------------------------------------
/assets/images/home_bond_arabic_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/assets/images/home_bond_arabic_dark.png
--------------------------------------------------------------------------------
/assets/images/home_bond_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/assets/images/home_bond_dark.png
--------------------------------------------------------------------------------
/assets/images/splash_logo-staging.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/assets/images/splash_logo-staging.png
--------------------------------------------------------------------------------
/assets/images/splash_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/assets/images/splash_logo.png
--------------------------------------------------------------------------------
/env.example.json:
--------------------------------------------------------------------------------
1 | {
2 | "API_BASE_URL": "https://2cec2c83-4fda-46d4-8aba-bd02cb21177e.mock.pstmn.io/api/",
3 | "CONNECT_TIMEOUT": "100000",
4 | "SEND_TIMEOUT": "1000000",
5 | "RECEIVE_TIMEOUT": "1000000",
6 | "RECEIVE_DATA_WHEN_STATUS_ERROR": "true"
7 | }
--------------------------------------------------------------------------------
/firebase.json:
--------------------------------------------------------------------------------
1 | {"flutter":{"platforms":{"android":{"buildConfigurations":{"src/production":{"projectId":"flutter-bond-8ae02","appId":"1:1077101979846:android:00afb3c0b4d1b8ae3a0fc7","fileOutput":"android/app/src/production/google-services.json"},"src/staging":{"projectId":"flutter-bond-staging-7dd42","appId":"1:390157281889:android:bf4d85c3c9a51044ab9820","fileOutput":"android/app/src/staging/google-services.json"}}},"ios":{"buildConfigurations":{"Debug-Production":{"projectId":"flutter-bond-8ae02","appId":"1:1077101979846:ios:a2d61d584196a5be3a0fc7","uploadDebugSymbols":true,"fileOutput":"ios/Production/GoogleService-Info.plist"},"Release-Production":{"projectId":"flutter-bond-8ae02","appId":"1:1077101979846:ios:a2d61d584196a5be3a0fc7","uploadDebugSymbols":true,"fileOutput":"ios/Production/GoogleService-Info.plist"},"Debug-Staging":{"projectId":"flutter-bond-staging-7dd42","appId":"1:390157281889:ios:8c87b8875dcdd94aab9820","uploadDebugSymbols":true,"fileOutput":"ios/Staging/GoogleService-Info.plist"},"Release-Staging":{"projectId":"flutter-bond-staging-7dd42","appId":"1:390157281889:ios:8c87b8875dcdd94aab9820","uploadDebugSymbols":true,"fileOutput":"ios/Staging/GoogleService-Info.plist"}}},"macos":{"buildConfigurations":{"Debug-Production":{"projectId":"flutter-bond-8ae02","appId":"1:1077101979846:ios:bb43f2ef1264d0e03a0fc7","uploadDebugSymbols":true,"fileOutput":"macos/Production/GoogleService-Info.plist"},"Release-Production":{"projectId":"flutter-bond-8ae02","appId":"1:1077101979846:ios:bb43f2ef1264d0e03a0fc7","uploadDebugSymbols":true,"fileOutput":"macos/Production/GoogleService-Info.plist"},"Debug-Staging":{"projectId":"flutter-bond-staging-7dd42","appId":"1:390157281889:ios:ba7ec93993371072ab9820","uploadDebugSymbols":true,"fileOutput":"macos/Staging/GoogleService-Info.plist"},"Release-Staging":{"projectId":"flutter-bond-staging-7dd42","appId":"1:390157281889:ios:ba7ec93993371072ab9820","uploadDebugSymbols":true,"fileOutput":"macos/Staging/GoogleService-Info.plist"}}},"dart":{"lib/firebase_options_production.dart":{"projectId":"flutter-bond-8ae02","configurations":{"android":"1:1077101979846:android:00afb3c0b4d1b8ae3a0fc7","ios":"1:1077101979846:ios:a2d61d584196a5be3a0fc7","macos":"1:1077101979846:ios:bb43f2ef1264d0e03a0fc7"}},"lib/firebase_options_staging.dart":{"projectId":"flutter-bond-staging-7dd42","configurations":{"android":"1:390157281889:android:bf4d85c3c9a51044ab9820","ios":"1:390157281889:ios:8c87b8875dcdd94aab9820","macos":"1:390157281889:ios:ba7ec93993371072ab9820"}}}}}}
--------------------------------------------------------------------------------
/flutter_launcher_icons-production.yaml:
--------------------------------------------------------------------------------
1 | flutter_launcher_icons:
2 | android: "launcher_icon"
3 | ios: true
4 | image_path: "assets/icons/app-icon.png"
5 | min_sdk_android: 21
6 | adaptive_icon_background: "#ffffff"
7 | adaptive_icon_foreground: "assets/icons/app-icon.png"
8 | macos:
9 | generate: true
10 | image_path: "assets/icons/app-icon.png"
11 | web:
12 | generate: true
13 | image_path: "assets/icons/app-icon.png"
14 | background_color: "#ffffff"
15 | theme_color: "#322E79"
--------------------------------------------------------------------------------
/flutter_launcher_icons-staging.yaml:
--------------------------------------------------------------------------------
1 | flutter_launcher_icons:
2 | android: "launcher_icon"
3 | ios: true
4 | image_path: "assets/icons/app-icon-staging.png"
5 | min_sdk_android: 21
6 | adaptive_icon_background: "#EB5C6C"
7 | adaptive_icon_foreground: "assets/icons/app-icon-staging.png"
8 | macos:
9 | generate: true
10 | image_path: "assets/icons/app-icon-staging.png"
11 | web:
12 | generate: true
13 | image_path: "assets/icons/app-icon.png"
14 | background_color: "#EB5C6C"
15 | theme_color: "#F05D6E"
--------------------------------------------------------------------------------
/flutter_native_splash-production.yaml:
--------------------------------------------------------------------------------
1 | flutter_native_splash:
2 | color: "#322E79"
3 | image: assets/images/splash_logo.png
4 | android_12:
5 | image: assets/images/splash_logo.png
6 | color: "#322E79"
7 | icon_background_color: "#322E79"
8 | web: true
9 |
10 |
--------------------------------------------------------------------------------
/flutter_native_splash-staging.yaml:
--------------------------------------------------------------------------------
1 | flutter_native_splash:
2 | color: "#F05D6E"
3 | image: assets/images/splash_logo-staging.png
4 | android_12:
5 | image: assets/images/splash_logo-staging.png
6 | color: "#F05D6E"
7 | icon_background_color: "#F05D6E"
8 | web: true
9 |
10 |
--------------------------------------------------------------------------------
/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 | en
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 | 12.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, '13.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 | end
36 |
37 | post_install do |installer|
38 | installer.pods_project.targets.each do |target|
39 | flutter_additional_ios_build_settings(target)
40 | end
41 | end
42 |
--------------------------------------------------------------------------------
/ios/Production/GoogleService-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | API_KEY
6 | AIzaSyBC8Jb_W3UwqIVcq9OE7WrcF3sQerxDdsQ
7 | GCM_SENDER_ID
8 | 1077101979846
9 | PLIST_VERSION
10 | 1
11 | BUNDLE_ID
12 | ps.app.bond
13 | PROJECT_ID
14 | flutter-bond-8ae02
15 | STORAGE_BUCKET
16 | flutter-bond-8ae02.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:1077101979846:ios:a2d61d584196a5be3a0fc7
29 |
30 |
--------------------------------------------------------------------------------
/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 | @main
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-production.appiconset/AppIcon-production-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-50x50@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-50x50@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-50x50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-50x50@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-57x57@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-57x57@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-57x57@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-57x57@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-72x72@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-72x72@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-72x72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-72x72@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-production.appiconset/AppIcon-production-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-50x50@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-50x50@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-50x50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-50x50@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-57x57@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-57x57@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-57x57@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-57x57@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-72x72@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-72x72@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-72x72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-72x72@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/AppIcon-staging.appiconset/AppIcon-staging-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackgroundProduction.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "background.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackgroundProduction.imageset/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/LaunchBackgroundProduction.imageset/background.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackgroundStaging.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "background.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackgroundStaging.imageset/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/LaunchBackgroundStaging.imageset/background.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/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/Assets.xcassets/LaunchImageProduction.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "LaunchImage.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/LaunchImageProduction.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/LaunchImageProduction.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImageProduction.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/LaunchImageProduction.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImageProduction.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/LaunchImageProduction.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImageStaging.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "LaunchImage.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/LaunchImageStaging.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/LaunchImageStaging.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImageStaging.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/LaunchImageStaging.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImageStaging.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Runner/Assets.xcassets/LaunchImageStaging.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CADisableMinimumFrameDurationOnPhone
6 |
7 | CFBundleDevelopmentRegion
8 | $(DEVELOPMENT_LANGUAGE)
9 | CFBundleDisplayName
10 | Bond
11 | CFBundleExecutable
12 | $(EXECUTABLE_NAME)
13 | CFBundleIdentifier
14 | $(PRODUCT_BUNDLE_IDENTIFIER)
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleLocalizations
18 |
19 | en
20 | ar
21 |
22 | CFBundleName
23 | bond
24 | CFBundlePackageType
25 | APPL
26 | CFBundleShortVersionString
27 | $(FLUTTER_BUILD_NAME)
28 | CFBundleSignature
29 | ????
30 | CFBundleVersion
31 | $(FLUTTER_BUILD_NUMBER)
32 | LSRequiresIPhoneOS
33 |
34 | UIApplicationSupportsIndirectInputEvents
35 |
36 | UILaunchStoryboardName
37 | $(LAUNCH_SCREEN_STORYBOARD)
38 | UIMainStoryboardFile
39 | Main
40 | UIStatusBarHidden
41 |
42 | UISupportedInterfaceOrientations
43 |
44 | UIInterfaceOrientationPortrait
45 |
46 | UISupportedInterfaceOrientations~ipad
47 |
48 | UIInterfaceOrientationLandscapeLeft
49 | UIInterfaceOrientationLandscapeRight
50 | UIInterfaceOrientationPortrait
51 | UIInterfaceOrientationPortraitUpsideDown
52 |
53 | UIViewControllerBasedStatusBarAppearance
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/ios/Staging/GoogleService-Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/Staging/GoogleService-Info.plist
--------------------------------------------------------------------------------
/ios/firebase_app_id_file_production.json:
--------------------------------------------------------------------------------
1 | {
2 | "file_generated_by": "FlutterFire CLI",
3 | "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
4 | "GOOGLE_APP_ID": "1:766000556009:ios:c008c663168299bed0cd78",
5 | "FIREBASE_PROJECT_ID": "flutter-bond-87485",
6 | "GCM_SENDER_ID": "766000556009"
7 | }
--------------------------------------------------------------------------------
/ios/firebase_app_id_file_staging.json:
--------------------------------------------------------------------------------
1 | {
2 | "file_generated_by": "FlutterFire CLI",
3 | "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
4 | "GOOGLE_APP_ID": "1:1060161913171:ios:7e71769f5507f2b255a1a6",
5 | "FIREBASE_PROJECT_ID": "flutter-bond-staging",
6 | "GCM_SENDER_ID": "1060161913171"
7 | }
--------------------------------------------------------------------------------
/ios/production/GoogleService-Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/production/GoogleService-Info.plist
--------------------------------------------------------------------------------
/ios/staging/GoogleService-Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onestudio-co/flutter-bond/822ac78fc9de1f5c0134ccdfebb537aba8f65bc9/ios/staging/GoogleService-Info.plist
--------------------------------------------------------------------------------
/l10n.yaml:
--------------------------------------------------------------------------------
1 | arb-dir: lib/l10n
2 | template-arb-file: app_en.arb
3 | output-localization-file: app_localizations.dart
4 |
--------------------------------------------------------------------------------
/lib/app/app.dart:
--------------------------------------------------------------------------------
1 | import 'package:bond/providers/notifications_service_provider.dart';
2 | import 'package:bond_core/bond_core.dart';
3 |
4 | import '../features/auth/auth_service_provider.dart';
5 | import '../features/post/post_service_provider.dart';
6 | import '../providers/analytics_service_provider.dart';
7 | import '../providers/api_service_provider.dart';
8 | import '../providers/app_service_provider.dart';
9 | import '../providers/cache_service_provider.dart';
10 | import '../providers/firebase_service_provider.dart';
11 | import '../providers/forms_service_provider.dart';
12 |
13 | final List providers = [
14 | // Framework Service Providers
15 | FirebaseServiceProvider(),
16 | AppServiceProvider(),
17 | CacheServiceProvider(),
18 | FormsServiceProvider(),
19 | AuthServiceProvider(),
20 | ApiServiceProvider(),
21 | AnalyticsServiceProvider(),
22 | NotificationsServiceProvider(),
23 |
24 | // Modules Service Providers
25 | PostServiceProvider(),
26 | ];
27 |
--------------------------------------------------------------------------------
/lib/app/app_run_tasks.dart:
--------------------------------------------------------------------------------
1 | import 'dart:developer';
2 |
3 | import 'package:bond/features/auth/auth.dart';
4 | import 'package:bond_core/bond_core.dart';
5 | import 'package:bond_notifications/bond_notifications.dart';
6 | import 'package:firebase_crashlytics/firebase_crashlytics.dart';
7 | import 'package:flutter/material.dart';
8 | import 'package:flutter_local_notifications/flutter_local_notifications.dart';
9 | import 'package:flutter_native_splash/flutter_native_splash.dart';
10 | import 'package:universal_platform/universal_platform.dart';
11 |
12 | class RunAppTasks extends RunTasks {
13 | @override
14 | Future beforeRun(WidgetsBinding widgetsBinding) async {
15 | FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
16 | FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
17 | FlutterNativeSplash.remove();
18 | }
19 |
20 | @override
21 | Future afterRun() async {
22 | if (UniversalPlatform.isAndroid) {
23 | const AndroidNotificationChannel channel = AndroidNotificationChannel(
24 | 'high_importance_channel', // id
25 | 'Bond', // title
26 | description:
27 | 'This channel is used for important notifications.', // description
28 | importance: Importance.max,
29 | );
30 |
31 | final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
32 |
33 | await flutterLocalNotificationsPlugin
34 | .resolvePlatformSpecificImplementation<
35 | AndroidFlutterLocalNotificationsPlugin>()
36 | ?.createNotificationChannel(channel);
37 | }
38 | sl().listen();
39 | if (Auth.check()) {
40 | sl().load();
41 | sl().listen();
42 | final firebaseMessaging =
43 | sl(instanceName: 'firebase_messaging');
44 | final fcmToken = await firebaseMessaging.token;
45 | if (fcmToken != null) {
46 | // TODO: send fcm token to server
47 | log('fcm token $fcmToken', name: 'RunAppTasks');
48 | }
49 | }
50 | }
51 |
52 | @override
53 | void onError(Object error, StackTrace stack) {
54 | log('Error: $error', stackTrace: stack);
55 | FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/lib/app/default_firebase_options.dart:
--------------------------------------------------------------------------------
1 | import 'package:bond/config/environments.dart';
2 | import 'package:firebase_core/firebase_core.dart';
3 |
4 | import '../firebase_options_production.dart' as production;
5 | import '../firebase_options_staging.dart' as staging;
6 |
7 | class DefaultFirebaseOptions {
8 | static FirebaseOptions get currentPlatform {
9 | final currentEnvironment = Environments.current;
10 | switch (currentEnvironment) {
11 | case EnvironmentType.staging:
12 | return staging.DefaultFirebaseOptions.currentPlatform;
13 | case EnvironmentType.production:
14 | return production.DefaultFirebaseOptions.currentPlatform;
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/lib/app/routes.dart:
--------------------------------------------------------------------------------
1 | import 'package:bond/features/auth/routes.dart';
2 | import 'package:bond/features/main/routes.dart';
3 | import 'package:bond/features/notification/routes.dart';
4 | import 'package:bond/features/post/routes.dart';
5 | import 'package:bond/features/update_app/routes.dart';
6 | import 'package:bond_core/bond_core.dart';
7 | import 'package:go_router/go_router.dart';
8 |
9 | final goRouter = GoRouter(
10 | debugLogDiagnostics: true,
11 | initialLocation: '/home',
12 | navigatorKey: appKey,
13 | routes: [
14 | ...mainRoutes,
15 | ...postRoutes,
16 | ...authRoutes,
17 | ...updateAppRoutes,
18 | ...notificationRoutes,
19 | ],
20 | );
21 |
--------------------------------------------------------------------------------
/lib/bond_app.dart:
--------------------------------------------------------------------------------
1 | import 'package:bond/app/routes.dart';
2 | import 'package:flutter/material.dart';
3 | import 'package:flutter_gen/gen_l10n/app_localizations.dart';
4 | import 'package:flutter_riverpod/flutter_riverpod.dart';
5 |
6 | import 'core/app_theme.dart';
7 | import 'features/app/app_providers.dart';
8 |
9 | class BondApp extends ConsumerWidget {
10 | const BondApp({super.key});
11 |
12 | @override
13 | Widget build(BuildContext context, WidgetRef ref) {
14 | final locale = ref.watch(localProvider);
15 | final theme = ref.watch(themeProvider);
16 | return MaterialApp.router(
17 | routerConfig: goRouter,
18 | localizationsDelegates: AppLocalizations.localizationsDelegates,
19 | locale: locale,
20 | supportedLocales: AppLocalizations.supportedLocales,
21 | debugShowCheckedModeBanner: true,
22 | theme: appLightThemeData(),
23 | darkTheme: appDarkThemeData(),
24 | themeMode: theme,
25 | );
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/config/analytics.dart:
--------------------------------------------------------------------------------
1 | import 'package:bond/core/app_analytics.dart';
2 |
3 | class AnalyticsConfig {
4 | static var providers = {
5 | 'firebase_analytics_provider': {
6 | 'driver': 'firebase_analytics_provider',
7 | 'class': FirebaseAnalyticsProvider,
8 | },
9 |
10 | };
11 | }
12 |
--------------------------------------------------------------------------------
/lib/config/api.dart:
--------------------------------------------------------------------------------
1 | const apiConfigs = {
2 | 'API_BASE_URL': String.fromEnvironment('API_BASE_URL'),
3 | 'CONNECT_TIMEOUT': int.fromEnvironment('CONNECT_TIMEOUT', defaultValue: 10000),
4 | 'SEND_TIMEOUT': int.fromEnvironment('SEND_TIMEOUT'),
5 | 'RECEIVE_TIMEOUT': int.fromEnvironment('RECEIVE_TIMEOUT'),
6 | 'RECEIVE_DATA_WHEN_STATUS_ERROR':
7 | bool.fromEnvironment('RECEIVE_DATA_WHEN_STATUS_ERROR'),
8 | };
9 |
--------------------------------------------------------------------------------
/lib/config/cache.dart:
--------------------------------------------------------------------------------
1 | import 'package:bond/core/cache/secure_storage_cache_driver.dart';
2 | import 'package:bond_cache/bond_cache.dart';
3 |
4 | class CacheConfig {
5 | static var defaultStore = 'shared_preference';
6 |
7 | static var stores = {
8 | 'shared_preference': {
9 | 'driver': 'shared_preference',
10 | 'class': SharedPreferencesCacheDriver,
11 | },
12 | 'in_memory': {
13 | 'driver': 'in_memory',
14 | 'class': InMemoryCacheDriver,
15 | },
16 | 'secure_cache': {
17 | 'driver': 'secure_cache',
18 | 'class': SecureStorageCacheDriver,
19 | },
20 | };
21 | }
22 |
--------------------------------------------------------------------------------
/lib/config/configs.dart:
--------------------------------------------------------------------------------
1 | import 'api.dart';
2 |
3 | final configs = {
4 | ...apiConfigs,
5 | };
6 |
7 | dynamic config(String key) {
8 | if (!configs.containsKey(key)) {
9 | throw Exception('Config $key not found');
10 | }
11 | return configs[key];
12 | }
13 |
--------------------------------------------------------------------------------
/lib/config/environments.dart:
--------------------------------------------------------------------------------
1 | import 'package:bond_core/bond_core.dart';
2 | import 'package:package_info_plus/package_info_plus.dart';
3 |
4 | enum EnvironmentType { staging, production }
5 |
6 | class Environments {
7 | static EnvironmentType get current =>
8 | sl().packageName.contains('staging')
9 | ? EnvironmentType.staging
10 | : EnvironmentType.production;
11 | }
12 |
--------------------------------------------------------------------------------
/lib/config/notification.dart:
--------------------------------------------------------------------------------
1 | import 'package:bond/core/app_notification_providers.dart';
2 | import 'package:bond_notifications/bond_notifications.dart';
3 |
4 | class NotificationConfig {
5 | static var providers = {
6 | 'push_notification': {
7 | 'driver': 'push_notification',
8 | 'class': PushNotificationsProviders,
9 | 'channels': [
10 | {
11 | 'name': 'firebase_messaging',
12 | 'class': FirebaseMessagingNotificationProvider,
13 | }
14 | ],
15 | },
16 | 'server_notification': {
17 | 'driver': 'notification_center',
18 | 'data_source': {
19 | 'name': 'notification_center_remote_data_source',
20 | 'class': NotificationCenterRemoteDataSource,
21 | },
22 | 'class': NotificationCenterProvider,
23 | }
24 | };
25 | }
26 |
--------------------------------------------------------------------------------
/lib/core/app_analytics.dart:
--------------------------------------------------------------------------------
1 | library;
2 |
3 | import 'dart:developer';
4 |
5 | import 'package:bond_app_analytics/bond_app_analytics.dart';
6 | import 'package:bond_core/bond_core.dart';
7 |
8 | import '../config/analytics.dart';
9 |
10 | export 'app_analytics_providers/firebase_analytics_provider.dart';
11 |
12 | class AppAnalytics {
13 | static void fire(AnalyticsEvent event) {
14 | AnalyticsConfig.providers.forEach(
15 | (key, value) {
16 | final driver = value['driver'] as String;
17 | log('AppAnalytics provider $driver'
18 | ' fire log ${event.key} and params ${event.params}');
19 | sl(instanceName: driver).log(event);
20 | },
21 | );
22 | }
23 |
24 | static void setUserId(int userId) {
25 | AnalyticsConfig.providers.forEach(
26 | (key, value) {
27 | final driver = value['driver'] as String;
28 | log('AppAnalytics provider $driver'
29 | ' set user userId $userId');
30 | sl(instanceName: driver).setUserId(userId);
31 | },
32 | );
33 | }
34 |
35 | static void setUserAttributes(Map attributes) {
36 | AnalyticsConfig.providers.forEach(
37 | (key, value) {
38 | final driver = value['driver'] as String;
39 | log('AppAnalytics provider $driver'
40 | ' set user attributes $attributes');
41 | sl(instanceName: driver).setUserAttributes(attributes);
42 | },
43 | );
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/lib/core/app_localizations.dart:
--------------------------------------------------------------------------------
1 | library;
2 |
3 | export 'localizations/app_localizations_extension.dart';
4 |
--------------------------------------------------------------------------------
/lib/core/app_notification_providers.dart:
--------------------------------------------------------------------------------
1 | library;
2 |
3 | export 'notifications/notification_center_remote_data_source.dart';
4 | export 'notifications/push_notifications_providers/firebase_messaging_push_notification_provider.dart';
5 |
--------------------------------------------------------------------------------
/lib/core/app_review.dart:
--------------------------------------------------------------------------------
1 | import 'package:in_app_review/in_app_review.dart';
2 |
3 | class AppReviewHelper {
4 | static Future showAppReview() async {
5 | bool isAvailable = await InAppReview.instance.isAvailable();
6 | if (isAvailable) {
7 | await InAppReview.instance.requestReview();
8 | return true;
9 | } else {
10 | return false;
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/lib/core/app_theme.dart:
--------------------------------------------------------------------------------
1 | library;
2 |
3 | export 'theme/app_dark_theme_data.dart';
4 | export 'theme/app_light_theme_data.dart';
5 | export 'theme/app_text_theme.dart';
6 |
--------------------------------------------------------------------------------
/lib/core/app_utils.dart:
--------------------------------------------------------------------------------
1 | library;
2 |
3 | export 'utils/device_info.dart';
4 |
--------------------------------------------------------------------------------
/lib/core/app_widgets.dart:
--------------------------------------------------------------------------------
1 | library;
2 |
3 | export 'widgets/app_button.dart';
4 | export 'widgets/bond_pop_menu/bond_pop_menu_button.dart';
5 |
--------------------------------------------------------------------------------
/lib/core/cache/secure_storage_cache_driver.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 | import 'dart:developer';
3 |
4 | import 'package:bond_cache/bond_cache.dart';
5 | import 'package:flutter_secure_storage/flutter_secure_storage.dart';
6 |
7 | class SecureStorageCacheDriver extends CacheDriver {
8 | final FlutterSecureStorage _storage;
9 |
10 | SecureStorageCacheDriver(this._storage);
11 |
12 | var _cache = {};
13 |
14 | Future loadAll() async {
15 | _cache = await _storage.readAll();
16 | return this;
17 | }
18 |
19 | @override
20 | Map? retrieve(String key) {
21 | try {
22 | final jsonString = _cache[key];
23 | if (jsonString == null) {
24 | return null;
25 | }
26 | return jsonDecode(jsonString);
27 | } catch (error, stack) {
28 | log('retrieve error: $error , stackTrace : $stack');
29 | return null;
30 | }
31 | }
32 |
33 | @override
34 | Future store(String key, Map data) async {
35 | try {
36 | final jsonString = jsonEncode(data);
37 | await _storage.write(key: key, value: jsonString);
38 | return Future.value(true);
39 | } catch (error, stack) {
40 | log('store error: $error , stackTrace : $stack');
41 | return Future.value(false);
42 | } finally {
43 | await loadAll();
44 | }
45 | }
46 |
47 | @override
48 | bool has(String key) => _cache.containsKey(key);
49 |
50 | @override
51 | Future removeAll() async {
52 | try {
53 | await _storage.deleteAll();
54 | return true;
55 | } catch (error, stack) {
56 | log('flush error: $error , stackTrace : $stack');
57 | return false;
58 | } finally {
59 | await loadAll();
60 | }
61 | }
62 |
63 | @override
64 | Future remove(String key) async {
65 | try {
66 | await _storage.delete(key: key);
67 | return true;
68 | } catch (error, stack) {
69 | log('forget error: $error , stackTrace : $stack');
70 | return false;
71 | } finally {
72 | await loadAll();
73 | }
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/lib/core/localizations/app_localizations_extension.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_gen/gen_l10n/app_localizations.dart';
3 |
4 | extension Localizations on BuildContext {
5 | AppLocalizations get localizations => AppLocalizations.of(this)!;
6 | }
7 |
--------------------------------------------------------------------------------
/lib/core/notifications/notification_center_remote_data_source.dart:
--------------------------------------------------------------------------------
1 | import 'package:bond_network/bond_network.dart';
2 | import 'package:bond_notifications/bond_notifications.dart';
3 | import 'package:dio/dio.dart';
4 |
5 | class NotificationCenterRemoteDataSource extends NotificationCenterDataSource {
6 | final ApiClient _client;
7 |
8 | NotificationCenterRemoteDataSource(this._client);
9 |
10 | @override
11 | Future> loadNotifications(
12 | {String? nextUrl}) async {
13 | final Response response = await _client.get(
14 | nextUrl ?? NotificationsApis.notifications,
15 | headers: Api.headers(),
16 | );
17 | return mapListResponse(response);
18 | }
19 |
20 | @override
21 | Future read(String uuid) async {
22 | await _client.post(
23 | NotificationsApis.read(uuid),
24 | headers: Api.headers(),
25 | );
26 | }
27 |
28 | @override
29 | Future readAll() async {
30 | await _client.post(
31 | NotificationsApis.readAll,
32 | headers: Api.headers(),
33 | );
34 | }
35 | }
36 |
37 | extension NotificationsApis on Api {
38 | static String get notifications => 'notifications';
39 |
40 | static String read(String id) => 'notifications/$id/read';
41 |
42 | static String get readAll => 'notifications/read-all';
43 | }
44 |
--------------------------------------------------------------------------------
/lib/core/notifications/push_notifications_providers/firebase_messaging_push_notification_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:bond_notifications/bond_notifications.dart';
2 | import 'package:firebase_messaging/firebase_messaging.dart';
3 |
4 | class FirebaseMessagingNotificationProvider extends PushNotificationProvider {
5 | final FirebaseMessaging _firebaseMessaging;
6 |
7 | FirebaseMessagingNotificationProvider(this._firebaseMessaging);
8 |
9 | @override
10 | Future get initialNotification async =>
11 | (await _firebaseMessaging.getInitialMessage())?.data;
12 |
13 | @override
14 | Stream get onNotification =>
15 | FirebaseMessaging.onMessage.map(
16 | (event) => event.data
17 | ..putIfAbsent('title', () => event.notification?.title)
18 | ..putIfAbsent('body', () => event.notification?.body)
19 | ..putIfAbsent('image', () => event.notification?.android?.imageUrl),
20 | );
21 |
22 | @override
23 | Stream get onNotificationTapped =>
24 | FirebaseMessaging.onMessageOpenedApp.map(
25 | (event) => event.data,
26 | );
27 |
28 | @override
29 | Stream get onTokenRefresh => _firebaseMessaging.onTokenRefresh;
30 |
31 | @override
32 | Future get token => _firebaseMessaging.getToken();
33 |
34 | @override
35 | Future get apnsToken => _firebaseMessaging.getAPNSToken();
36 |
37 | @override
38 | Future deleteToken() => _firebaseMessaging.deleteToken();
39 |
40 | @override
41 | Stream get onNotificationDismiss => throw UnimplementedError();
42 | }
43 |
--------------------------------------------------------------------------------
/lib/core/resources/app_assets.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class AppImagesAssets {
4 | static const String logo = 'assets/images/app_logo.svg';
5 | static const String forceUpdate = 'assets/images/force_update.png';
6 | static const String _homeBondLight = 'assets/images/home_bond.png';
7 | static const String _homeBondDark = 'assets/images/home_bond_dark.png';
8 |
9 | static const String _homeBondArabicLight =
10 | 'assets/images/home_bond_arabic.png';
11 | static const String _homeBondArabicDark =
12 | 'assets/images/home_bond_arabic_dark.png';
13 |
14 | static String homeBond(Brightness mode, String locale) {
15 | if (mode == Brightness.light) {
16 | return locale == 'ar' ? _homeBondArabicLight : _homeBondLight;
17 | } else {
18 | return locale == 'ar' ? _homeBondArabicDark : _homeBondDark;
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/core/resources/app_icons.dart:
--------------------------------------------------------------------------------
1 | class AppIcons {
2 | static const String test = 'assets/icons/test.svg';
3 | static const String close = 'assets/icons/close.svg';
4 | static const String share = 'assets/icons/share.svg';
5 | }
6 |
--------------------------------------------------------------------------------
/lib/core/route_helpers.dart:
--------------------------------------------------------------------------------
1 | library;
2 |
3 | export 'route_helpers/modal_bottom_sheet_page.dart';
4 |
--------------------------------------------------------------------------------
/lib/core/route_helpers/modal_bottom_sheet_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class ModalBottomSheetPage extends Page {
4 | final Widget child;
5 | final bool isScrollControlled;
6 |
7 | const ModalBottomSheetPage({
8 | required this.child,
9 | this.isScrollControlled = false,
10 | super.key,
11 | super.name,
12 | super.arguments,
13 | });
14 |
15 | @override
16 | Route createRoute(BuildContext context) {
17 | return ModalBottomSheetRoute(
18 | builder: (BuildContext context) {
19 | return child;
20 | },
21 | isScrollControlled: true,
22 | );
23 | }
24 | }
--------------------------------------------------------------------------------
/lib/core/theme/app_text_theme.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:google_fonts/google_fonts.dart';
3 |
4 | // This code is copied from https://m2.material.io/design/typography/the-type-system.html#type-scale
5 |
6 | final appTextTheme = TextTheme(
7 | displayLarge: GoogleFonts.tajawal(
8 | fontSize: 112,
9 | fontWeight: FontWeight.w300,
10 | letterSpacing: -1.5,
11 | ),
12 | displayMedium: GoogleFonts.tajawal(
13 | fontSize: 70,
14 | fontWeight: FontWeight.w300,
15 | letterSpacing: -0.5,
16 | ),
17 | displaySmall: GoogleFonts.tajawal(
18 | fontSize: 56,
19 | fontWeight: FontWeight.w400,
20 | ),
21 | headlineMedium: GoogleFonts.tajawal(
22 | fontSize: 40,
23 | fontWeight: FontWeight.w400,
24 | letterSpacing: 0.25,
25 | ),
26 | headlineSmall: GoogleFonts.tajawal(
27 | fontSize: 28,
28 | fontWeight: FontWeight.w400,
29 | ),
30 | titleLarge: GoogleFonts.tajawal(
31 | fontSize: 23,
32 | fontWeight: FontWeight.w500,
33 | letterSpacing: 0.15,
34 | ),
35 | titleMedium: GoogleFonts.tajawal(
36 | fontSize: 19,
37 | fontWeight: FontWeight.w400,
38 | letterSpacing: 0.15,
39 | ),
40 | titleSmall: GoogleFonts.tajawal(
41 | fontSize: 16, fontWeight: FontWeight.w500, letterSpacing: 0.1),
42 | bodyLarge: GoogleFonts.tajawal(
43 | fontSize: 19,
44 | fontWeight: FontWeight.w400,
45 | letterSpacing: 0.5,
46 | ),
47 | bodyMedium: GoogleFonts.tajawal(
48 | fontSize: 16,
49 | fontWeight: FontWeight.w400,
50 | letterSpacing: 0.25,
51 | ),
52 | labelLarge: GoogleFonts.tajawal(
53 | fontSize: 16,
54 | fontWeight: FontWeight.w500,
55 | letterSpacing: 1.25,
56 | ),
57 | bodySmall: GoogleFonts.tajawal(
58 | fontSize: 14,
59 | fontWeight: FontWeight.w400,
60 | letterSpacing: 0.4,
61 | ),
62 | labelSmall: GoogleFonts.tajawal(
63 | fontSize: 12,
64 | fontWeight: FontWeight.w400,
65 | letterSpacing: 1.5,
66 | ),
67 | );
68 |
--------------------------------------------------------------------------------
/lib/core/utils/device_info.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io';
2 |
3 | import 'package:bond_cache/bond_cache.dart';
4 | import 'package:bond_core/bond_core.dart';
5 | import 'package:device_info_plus/device_info_plus.dart';
6 | import 'package:package_info_plus/package_info_plus.dart';
7 | import 'package:universal_platform/universal_platform.dart';
8 |
9 | class DeviceInfo {
10 | Future