├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
└── workflows
│ ├── ci.yml
│ └── release.yml
├── .gitignore
├── .metadata
├── LICENSE
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── run_run_run
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-v21
│ │ │ └── launch_background.xml
│ │ │ ├── drawable
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── run.png
│ │ │ ├── mipmap-ldpi
│ │ │ └── run.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── run.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── run.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── run.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── run.png
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── banner.png
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Podfile
├── Podfile.lock
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
├── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ ├── Icon-App-20x20@1x.png
│ │ │ ├── Icon-App-20x20@2x.png
│ │ │ ├── Icon-App-20x20@3x.png
│ │ │ ├── Icon-App-29x29@1x.png
│ │ │ ├── Icon-App-29x29@2x.png
│ │ │ ├── Icon-App-29x29@3x.png
│ │ │ ├── Icon-App-40x40@1x.png
│ │ │ ├── Icon-App-40x40@2x.png
│ │ │ ├── Icon-App-40x40@3x.png
│ │ │ ├── Icon-App-60x60@2x.png
│ │ │ ├── Icon-App-60x60@3x.png
│ │ │ ├── Icon-App-76x76@1x.png
│ │ │ ├── Icon-App-76x76@2x.png
│ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ └── LaunchImage.imageset
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ └── README.md
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
└── RunnerTests
│ └── RunnerTests.swift
├── lib
├── core
│ ├── debouncer.dart
│ ├── error.dart
│ └── utils
│ │ └── storage_utils.dart
├── data
│ ├── api
│ │ ├── activity_api.dart
│ │ ├── friend_request_api.dart
│ │ ├── helpers
│ │ │ └── api_helper.dart
│ │ └── user_api.dart
│ ├── model
│ │ ├── request
│ │ │ ├── activity_request.dart
│ │ │ ├── edit_password_request.dart
│ │ │ ├── edit_profile_request.dart
│ │ │ ├── location_request.dart
│ │ │ ├── login_request.dart
│ │ │ ├── registration_request.dart
│ │ │ └── send_new_password_request.dart
│ │ └── response
│ │ │ ├── activity_comment_response.dart
│ │ │ ├── activity_response.dart
│ │ │ ├── friend_request_response.dart
│ │ │ ├── location_response.dart
│ │ │ ├── login_response.dart
│ │ │ ├── page_response.dart
│ │ │ └── user_response.dart
│ └── repositories
│ │ ├── activity_repository_impl.dart
│ │ ├── friend_request_repository_impl.dart
│ │ └── user_repository_impl.dart
├── domain
│ ├── entities
│ │ ├── activity.dart
│ │ ├── activity_comment.dart
│ │ ├── enum
│ │ │ ├── activity_type.dart
│ │ │ └── friend_request_status.dart
│ │ ├── friend_request.dart
│ │ ├── location.dart
│ │ ├── page.dart
│ │ └── user.dart
│ └── repositories
│ │ ├── activity_repository.dart
│ │ ├── friend_request_repository.dart
│ │ └── user_repository.dart
├── l10n.yaml
├── l10n
│ ├── app_ar.arb
│ ├── app_bn.arb
│ ├── app_de.arb
│ ├── app_en.arb
│ ├── app_en_US.arb
│ ├── app_es.arb
│ ├── app_fr.arb
│ ├── app_fr_FR.arb
│ ├── app_hi.arb
│ ├── app_it.arb
│ ├── app_pt.arb
│ ├── app_ru.arb
│ ├── app_ur.arb
│ ├── app_zh.arb
│ └── support_locale.dart
├── main.dart
└── presentation
│ ├── common
│ ├── activity
│ │ ├── view_model
│ │ │ ├── activity_item_comments_view_model.dart
│ │ │ ├── activity_item_interaction_view_model.dart
│ │ │ ├── activity_item_like_view_model.dart
│ │ │ ├── activity_item_view_model.dart
│ │ │ ├── activity_list_view_model.dart
│ │ │ └── state
│ │ │ │ ├── activity_item_comments_state.dart
│ │ │ │ ├── activity_item_interaction_state.dart
│ │ │ │ ├── activity_item_like_state.dart
│ │ │ │ ├── activity_item_state.dart
│ │ │ │ └── activity_list_state.dart
│ │ └── widgets
│ │ │ ├── activity_comments.dart
│ │ │ ├── activity_item.dart
│ │ │ ├── activity_item_details.dart
│ │ │ ├── activity_item_interaction.dart
│ │ │ ├── activity_item_user_informations.dart
│ │ │ ├── activity_list.dart
│ │ │ └── activty_like.dart
│ ├── core
│ │ ├── enums
│ │ │ └── infinite_scroll_list.enum.dart
│ │ ├── services
│ │ │ └── text_to_speech_service.dart
│ │ ├── utils
│ │ │ ├── activity_utils.dart
│ │ │ ├── color_utils.dart
│ │ │ ├── form_utils.dart
│ │ │ ├── image_utils.dart
│ │ │ ├── map_utils.dart
│ │ │ ├── share_utils.dart
│ │ │ ├── type_utils.dart
│ │ │ ├── ui_utils.dart
│ │ │ └── user_utils.dart
│ │ ├── validators
│ │ │ └── login_validators.dart
│ │ └── widgets
│ │ │ ├── date.dart
│ │ │ ├── infinite_scroll_list.dart
│ │ │ ├── share_map_button.dart
│ │ │ ├── upload_file.dart
│ │ │ └── view_model
│ │ │ ├── infinite_scroll_list_view_model.dart
│ │ │ └── state
│ │ │ └── infinite_scroll_list_state.dart
│ ├── friendship
│ │ └── widgets
│ │ │ └── accept_refuse.dart
│ ├── location
│ │ ├── view_model
│ │ │ ├── location_view_model.dart
│ │ │ └── state
│ │ │ │ └── location_state.dart
│ │ └── widgets
│ │ │ ├── current_location_map.dart
│ │ │ └── location_map.dart
│ ├── metrics
│ │ ├── view_model
│ │ │ ├── metrics_view_model.dart
│ │ │ └── state
│ │ │ │ └── metrics_state.dart
│ │ └── widgets
│ │ │ └── metrics.dart
│ ├── timer
│ │ ├── viewmodel
│ │ │ ├── state
│ │ │ │ └── timer_state.dart
│ │ │ └── timer_view_model.dart
│ │ └── widgets
│ │ │ ├── timer_pause.dart
│ │ │ ├── timer_sized.dart
│ │ │ ├── timer_start.dart
│ │ │ └── timer_text.dart
│ └── user
│ │ ├── screens
│ │ └── profile_screen.dart
│ │ ├── view_model
│ │ ├── profile_picture_view_model.dart
│ │ ├── profile_view_model.dart
│ │ └── state
│ │ │ ├── profile_picture_state.dart
│ │ │ └── profile_state.dart
│ │ └── widgets
│ │ └── friend_request.dart
│ ├── community
│ ├── screens
│ │ ├── community_screen.dart
│ │ └── pending_requests_screen.dart
│ ├── view_model
│ │ ├── community_view_model.dart
│ │ ├── pending_request_view_model.dart
│ │ └── state
│ │ │ ├── community_state.dart
│ │ │ └── pending_requests_state.dart
│ └── widgets
│ │ ├── pending_request_list.dart
│ │ └── search_widget.dart
│ ├── home
│ ├── screens
│ │ └── home_screen.dart
│ └── view_model
│ │ ├── home_view_model.dart
│ │ └── state
│ │ └── home_state.dart
│ ├── login
│ ├── screens
│ │ └── login_screen.dart
│ └── view_model
│ │ ├── login_view_model.dart
│ │ └── state
│ │ └── login_state.dart
│ ├── my_activities
│ ├── screens
│ │ ├── activity_details_screen.dart
│ │ └── activity_list_screen.dart
│ ├── view_model
│ │ ├── activity_details_view_model.dart
│ │ ├── activity_list_view_model.dart
│ │ └── state
│ │ │ ├── activitie_details_state.dart
│ │ │ └── activity_list_state.dart
│ └── widgets
│ │ ├── back_to_home_button.dart
│ │ ├── details_tab.dart
│ │ └── graph_tab.dart
│ ├── new_activity
│ ├── screens
│ │ ├── new_activity_screen.dart
│ │ └── sum_up_screen.dart
│ ├── view_model
│ │ ├── state
│ │ │ └── sum_up_state.dart
│ │ └── sum_up_view_model.dart
│ └── widgets
│ │ └── save_button.dart
│ ├── registration
│ ├── screens
│ │ └── registration_screen.dart
│ └── view_model
│ │ ├── registration_view_model.dart
│ │ └── state
│ │ └── registration_state.dart
│ ├── send_new_password
│ ├── screens
│ │ └── send_new_password_screen.dart
│ └── view_model
│ │ ├── send_new_password_view_model.dart
│ │ └── state
│ │ └── send_new_password_state.dart
│ └── settings
│ ├── screens
│ ├── edit_password_screen.dart
│ ├── edit_profile_screen.dart
│ └── settings_screen.dart
│ └── view_model
│ ├── edit_password_view_model.dart
│ ├── edit_profile_view_model.dart
│ ├── settings_view_model.dart
│ └── state
│ ├── edit_password_state.dart
│ ├── edit_profile_state.dart
│ └── settings_state.dart
├── pubspec.lock
├── pubspec.yaml
├── screenshots
├── activity_list
│ ├── activity_details.png
│ ├── activity_graph.png
│ └── activity_list.png
├── community
│ ├── all_activities.png
│ ├── pending_requests.png
│ └── user_profile.png
├── login_registration
│ ├── login.png
│ └── registration.png
├── new_activity
│ ├── current_activity.png
│ └── home.png
└── settings
│ ├── edit_profile.png
│ └── settings.png
└── test
└── presentation
└── core
└── utils
├── activity_utils_test.dart
├── color_utils_test.dart
├── form_utils_test.dart
├── map_utils_test.dart
└── ui_utils_test.dart
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: Build mobile apps & check tests
2 |
3 | on:
4 | push:
5 | branches: [ "main" ]
6 | pull_request:
7 | branches: [ "main" ]
8 |
9 | jobs:
10 | build-android:
11 | name: Build android
12 | runs-on: ubuntu-latest
13 |
14 | steps:
15 | - uses: actions/checkout@v3
16 | - uses: actions/setup-java@v2
17 | with:
18 | distribution: 'zulu'
19 | java-version: '17'
20 | - uses: subosito/flutter-action@v2
21 | with:
22 | flutter-version: '3.24.0'
23 | - name: Clean Gradle cache
24 | run: rm -rf ~/.gradle/caches/
25 | - name: Flutter clean
26 | run: flutter clean
27 | - name: Install dependencies
28 | run: flutter pub get
29 | - name: Generate l10n
30 | run: flutter gen-l10n
31 | - name: Build apk
32 | run: flutter build apk
33 | - name: Build appbundle
34 | run: flutter build appbundle
35 |
36 | build-ios:
37 | name: Build ios
38 | runs-on: macos-latest
39 |
40 | steps:
41 | - uses: actions/checkout@v3
42 | - uses: subosito/flutter-action@v2
43 | with:
44 | channel: 'stable'
45 | architecture: x64
46 | - name: Install dependencies
47 | run: flutter pub get
48 | - name: Generate l10n
49 | run: flutter gen-l10n
50 | - name: Build ios
51 | run: flutter build ios --release --no-codesign
52 |
53 | check-tests:
54 | name: Check Tests
55 | runs-on: ubuntu-latest
56 |
57 | steps:
58 | - uses: actions/checkout@v3
59 | - uses: subosito/flutter-action@v2
60 | with:
61 | flutter-version: '3.24.0'
62 | channel: 'stable'
63 | - name: Flutter doctor
64 | run: flutter doctor
65 | - name: Get dependencies
66 | run: flutter pub get
67 | - name: Run l10n generation
68 | run: flutter gen-l10n
69 | - name: Run tests
70 | run: flutter test
71 |
72 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Release Flutter APK
2 |
3 | on:
4 | release:
5 | types: [created]
6 |
7 | jobs:
8 | build:
9 | runs-on: ubuntu-latest
10 |
11 | steps:
12 | - name: Checkout code
13 | uses: actions/checkout@v2
14 |
15 | - name: Setup Flutter
16 | uses: subosito/flutter-action@v2
17 | with:
18 | flutter-version: '3.24.0'
19 |
20 | - name: Install dependencies
21 | run: flutter pub get
22 | - name: Generate l10n
23 | run: flutter gen-l10n
24 | - name: Build APK
25 | run: flutter build apk --release
26 |
27 | - name: Upload APK
28 | uses: actions/upload-artifact@v2
29 | with:
30 | name: run-flutter-run.apk
31 | path: build/app/outputs/flutter-apk/app-release.apk
32 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 | migrate_working_dir/
12 |
13 | # IntelliJ related
14 | *.iml
15 | *.ipr
16 | *.iws
17 | .idea/
18 |
19 | # The .vscode folder contains launch configuration and tasks you configure in
20 | # VS Code which you may wish to be included in version control, so this line
21 | # is commented out by default.
22 | #.vscode/
23 |
24 | # Flutter/Dart/Pub related
25 | **/doc/api/
26 | **/ios/Flutter/.last_build_id
27 | .dart_tool/
28 | .flutter-plugins
29 | .flutter-plugins-dependencies
30 | .packages
31 | .pub-cache/
32 | .pub/
33 | /build/
34 |
35 | # Symbolication related
36 | app.*.symbols
37 |
38 | # Obfuscation related
39 | app.*.map.json
40 |
41 | # Android Studio will place build artifacts here
42 | /android/app/debug
43 | /android/app/profile
44 | /android/app/release
45 |
--------------------------------------------------------------------------------
/.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: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
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: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
17 | base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
18 | - platform: android
19 | create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
20 | base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
21 | - platform: ios
22 | create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
23 | base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
24 | - platform: linux
25 | create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
26 | base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
27 | - platform: macos
28 | create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
29 | base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
30 | - platform: web
31 | create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
32 | base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
33 | - platform: windows
34 | create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
35 | base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
36 |
37 | # User provided section
38 |
39 | # List of Local paths (relative to this file) that should be
40 | # ignored by the migrate tool.
41 | #
42 | # Files that are not part of the templates will be ignored by default.
43 | unmanaged_files:
44 | - 'lib/main.dart'
45 | - 'ios/Runner.xcodeproj/project.pbxproj'
46 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Benjamin Canape
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # Run Flutter Run
4 |
5 | A clone of the Runtastic or Strava mobile app
6 |
7 | ## Fork it, add new functionnalities, please don't hesitate
8 |
9 | If you want to play with the project or add new functionnalities, you can fork this current repository and the backend one (https://github.com/BenjaminCanape/RunBackEndRun) and do what you want with it, and if it's awesome maybe propose it in a Pull request here.
10 |
11 | I would be happy to see all your ideas and improvments.
12 |
13 | And if the code helped you and you want to thank me for this, you can buy me a coffee:
14 |
15 |
16 |
17 | ## Functionalities
18 |
19 | Record your running, walking, and cycling sessions with session tracking through voice synthesis and a map updated with real-time location.
20 |
21 | Users can also view their previous sessions and follow other users to see, like and comment their activities.
22 |
23 | ## Getting Started
24 |
25 | ### Prerequisites
26 |
27 | You need flutter (The best is to use the version 3.22 and above)
28 |
29 | ### How to run
30 |
31 | ```
32 | flutter pub get
33 | flutter gen-l10n
34 | flutter run
35 | ```
36 |
37 | ## Some screenshots of the application
38 |
39 | ### New Activity
40 |
41 |
42 |
43 | ### Activity list
44 |
45 |
46 |
47 | ### Community
48 |
49 |
50 |
51 | ### Settings
52 |
53 |
54 |
55 | ### Login and registration
56 |
57 |
58 |
--------------------------------------------------------------------------------
/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/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id "com.android.application"
3 | id "kotlin-android"
4 | id "dev.flutter.flutter-gradle-plugin"
5 | }
6 |
7 | def localProperties = new Properties()
8 | def localPropertiesFile = rootProject.file('local.properties')
9 | if (localPropertiesFile.exists()) {
10 | localPropertiesFile.withReader('UTF-8') { reader ->
11 | localProperties.load(reader)
12 | }
13 | }
14 |
15 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
16 | if (flutterVersionCode == null) {
17 | flutterVersionCode = '1'
18 | }
19 |
20 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
21 | if (flutterVersionName == null) {
22 | flutterVersionName = '1.0'
23 | }
24 |
25 | android {
26 | namespace "com.example.run_flutter_run"
27 | compileSdkVersion 34
28 | ndkVersion flutter.ndkVersion
29 |
30 | compileOptions {
31 | sourceCompatibility JavaVersion.VERSION_17
32 | targetCompatibility JavaVersion.VERSION_17
33 | }
34 |
35 | kotlin {
36 | jvmToolchain(17)
37 | }
38 |
39 | sourceSets {
40 | main.java.srcDirs += 'src/main/kotlin'
41 | }
42 |
43 | defaultConfig {
44 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
45 | applicationId "com.example.run_flutter_run"
46 | // You can update the following values to match your application needs.
47 | // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
48 | minSdkVersion 21
49 | targetSdkVersion flutter.targetSdkVersion
50 | versionCode flutterVersionCode.toInteger()
51 | versionName flutterVersionName
52 | }
53 |
54 | buildTypes {
55 | release {
56 | // TODO: Add your own signing config for the release build.
57 | // Signing with the debug keys for now, so `flutter run --release` works.
58 | signingConfig signingConfigs.debug
59 | }
60 | }
61 | }
62 |
63 | flutter {
64 | source '../..'
65 | }
66 |
67 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
11 |
19 |
23 |
27 |
28 |
29 |
30 |
31 |
32 |
36 |
38 |
41 |
42 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/example/run_run_run/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.run_flutter_run
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/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/run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/android/app/src/main/res/mipmap-hdpi/run.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-ldpi/run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/android/app/src/main/res/mipmap-ldpi/run.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/android/app/src/main/res/mipmap-mdpi/run.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/android/app/src/main/res/mipmap-xhdpi/run.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/android/app/src/main/res/mipmap-xxhdpi/run.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/android/app/src/main/res/mipmap-xxxhdpi/run.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/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 |
20 | configurations.all {
21 | resolutionStrategy {
22 | force 'androidx.core:core:2.0.10'
23 | force 'androidx.core:core-ktx:2.0.10'
24 | }
25 | }
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 | kotlin.jvm.target.validation.mode = IGNORE
--------------------------------------------------------------------------------
/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.9-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 "7.3.0" apply false
23 | id "org.jetbrains.kotlin.android" version "2.0.10" apply false
24 | }
25 |
26 | include ":app"
27 |
--------------------------------------------------------------------------------
/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/banner.png
--------------------------------------------------------------------------------
/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 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
32 | end
33 |
34 | post_install do |installer|
35 | installer.pods_project.targets.each do |target|
36 | flutter_additional_ios_build_settings(target)
37 | end
38 | end
39 |
--------------------------------------------------------------------------------
/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.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "Icon-App-20x20@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "Icon-App-20x20@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "Icon-App-29x29@1x.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "Icon-App-29x29@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "29x29",
29 | "idiom" : "iphone",
30 | "filename" : "Icon-App-29x29@3x.png",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "Icon-App-40x40@2x.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "40x40",
41 | "idiom" : "iphone",
42 | "filename" : "Icon-App-40x40@3x.png",
43 | "scale" : "3x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "Icon-App-60x60@2x.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "60x60",
53 | "idiom" : "iphone",
54 | "filename" : "Icon-App-60x60@3x.png",
55 | "scale" : "3x"
56 | },
57 | {
58 | "size" : "20x20",
59 | "idiom" : "ipad",
60 | "filename" : "Icon-App-20x20@1x.png",
61 | "scale" : "1x"
62 | },
63 | {
64 | "size" : "20x20",
65 | "idiom" : "ipad",
66 | "filename" : "Icon-App-20x20@2x.png",
67 | "scale" : "2x"
68 | },
69 | {
70 | "size" : "29x29",
71 | "idiom" : "ipad",
72 | "filename" : "Icon-App-29x29@1x.png",
73 | "scale" : "1x"
74 | },
75 | {
76 | "size" : "29x29",
77 | "idiom" : "ipad",
78 | "filename" : "Icon-App-29x29@2x.png",
79 | "scale" : "2x"
80 | },
81 | {
82 | "size" : "40x40",
83 | "idiom" : "ipad",
84 | "filename" : "Icon-App-40x40@1x.png",
85 | "scale" : "1x"
86 | },
87 | {
88 | "size" : "40x40",
89 | "idiom" : "ipad",
90 | "filename" : "Icon-App-40x40@2x.png",
91 | "scale" : "2x"
92 | },
93 | {
94 | "size" : "76x76",
95 | "idiom" : "ipad",
96 | "filename" : "Icon-App-76x76@1x.png",
97 | "scale" : "1x"
98 | },
99 | {
100 | "size" : "76x76",
101 | "idiom" : "ipad",
102 | "filename" : "Icon-App-76x76@2x.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "83.5x83.5",
107 | "idiom" : "ipad",
108 | "filename" : "Icon-App-83.5x83.5@2x.png",
109 | "scale" : "2x"
110 | },
111 | {
112 | "size" : "1024x1024",
113 | "idiom" : "ios-marketing",
114 | "filename" : "Icon-App-1024x1024@1x.png",
115 | "scale" : "1x"
116 | }
117 | ],
118 | "info" : {
119 | "version" : 1,
120 | "author" : "xcode"
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BenjaminCanape/RunFlutterRun/5b06027a75292e19b66c0b39a171ff2f1016c2e4/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/LaunchScreen.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 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/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 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | Run Run Run
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | run_flutter_run
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(FLUTTER_BUILD_NAME)
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | $(FLUTTER_BUILD_NUMBER)
25 | LSRequiresIPhoneOS
26 |
27 | UILaunchStoryboardName
28 | LaunchScreen
29 | UIMainStoryboardFile
30 | Main
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 | UISupportedInterfaceOrientations~ipad
38 |
39 | UIInterfaceOrientationPortrait
40 | UIInterfaceOrientationPortraitUpsideDown
41 | UIInterfaceOrientationLandscapeLeft
42 | UIInterfaceOrientationLandscapeRight
43 |
44 | UIViewControllerBasedStatusBarAppearance
45 |
46 | CADisableMinimumFrameDurationOnPhone
47 |
48 | UIApplicationSupportsIndirectInputEvents
49 |
50 | NSLocationWhenInUseUsageDescription
51 | This app needs access to location when open.
52 | NSPhotoLibraryUsageDescription
53 | Allow this app to access your photos
54 |
55 |
56 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/ios/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/lib/core/debouncer.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 | import 'dart:ui';
3 |
4 | class Debouncer {
5 | final int milliseconds;
6 | VoidCallback? action;
7 | Timer? _timer;
8 |
9 | Debouncer({required this.milliseconds});
10 |
11 | run(VoidCallback action) {
12 | if (_timer != null) {
13 | _timer!.cancel();
14 | }
15 | _timer = Timer(Duration(milliseconds: milliseconds), action);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/lib/core/error.dart:
--------------------------------------------------------------------------------
1 | import 'package:equatable/equatable.dart';
2 |
3 | /// Represents a failure object that can be used for error handling and reporting.
4 | class Failure extends Equatable {
5 | /// The error message associated with the failure.
6 | final String message;
7 |
8 | /// Constructs a Failure object with the given [message].
9 | const Failure({required this.message});
10 |
11 | @override
12 | List