├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.yml
│ └── feature_request.yml
└── workflows
│ ├── main.yml
│ ├── pc.yml
│ └── pre.yml
├── .gitignore
├── .metadata
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── gokadzev
│ │ │ │ └── musify
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-hdpi
│ │ │ ├── android12splash.png
│ │ │ ├── audio_service_pause.png
│ │ │ ├── audio_service_play_arrow.png
│ │ │ ├── audio_service_skip_next.png
│ │ │ ├── audio_service_skip_previous.png
│ │ │ ├── audio_service_stop.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── splash.png
│ │ │ ├── drawable-mdpi
│ │ │ ├── android12splash.png
│ │ │ ├── audio_service_pause.png
│ │ │ ├── audio_service_play_arrow.png
│ │ │ ├── audio_service_skip_next.png
│ │ │ ├── audio_service_skip_previous.png
│ │ │ ├── audio_service_stop.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── splash.png
│ │ │ ├── drawable-night-hdpi
│ │ │ ├── android12splash.png
│ │ │ └── splash.png
│ │ │ ├── drawable-night-mdpi
│ │ │ ├── android12splash.png
│ │ │ └── splash.png
│ │ │ ├── drawable-night-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-night-xhdpi
│ │ │ ├── android12splash.png
│ │ │ └── splash.png
│ │ │ ├── drawable-night-xxhdpi
│ │ │ ├── android12splash.png
│ │ │ └── splash.png
│ │ │ ├── drawable-night-xxxhdpi
│ │ │ ├── android12splash.png
│ │ │ └── splash.png
│ │ │ ├── drawable-night
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-xhdpi
│ │ │ ├── android12splash.png
│ │ │ ├── audio_service_pause.png
│ │ │ ├── audio_service_play_arrow.png
│ │ │ ├── audio_service_skip_next.png
│ │ │ ├── audio_service_skip_previous.png
│ │ │ ├── audio_service_stop.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── splash.png
│ │ │ ├── drawable-xxhdpi
│ │ │ ├── android12splash.png
│ │ │ ├── audio_service_pause.png
│ │ │ ├── audio_service_play_arrow.png
│ │ │ ├── audio_service_skip_next.png
│ │ │ ├── audio_service_skip_previous.png
│ │ │ ├── audio_service_stop.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── splash.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ ├── android12splash.png
│ │ │ ├── audio_service_pause.png
│ │ │ ├── audio_service_play_arrow.png
│ │ │ ├── audio_service_skip_next.png
│ │ │ ├── audio_service_skip_previous.png
│ │ │ ├── audio_service_stop.png
│ │ │ ├── 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
│ │ │ ├── raw
│ │ │ └── keep.xml
│ │ │ ├── values-night-v31
│ │ │ └── styles.xml
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ ├── values-v31
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── db
│ └── playlists.db.json
└── images
│ ├── ic_launcher.png
│ ├── ic_launcher_background.jpg
│ ├── ic_launcher_foreground.png
│ ├── ic_launcher_round.png
│ └── splash.png
├── fastlane
└── metadata
│ └── android
│ └── en-US
│ ├── full_description.txt
│ ├── images
│ ├── icon.png
│ └── phoneScreenshots
│ │ ├── 01.jpg
│ │ ├── 02.jpg
│ │ └── 03.jpg
│ └── short_description.txt
├── fonts
└── ubuntu.ttf
├── l10n.yaml
├── lib
├── API
│ └── musify.dart
├── customWidgets
│ ├── custom_animated_bottom_bar.dart
│ ├── delayed_display.dart
│ ├── marque.dart
│ ├── setting_bar.dart
│ ├── song_bar.dart
│ └── spinner.dart
├── helper
│ ├── flutter_toast.dart
│ ├── formatter.dart
│ ├── mediaitem.dart
│ ├── url_launcher.dart
│ └── version.dart
├── localization
│ ├── app_de.arb
│ ├── app_en.arb
│ ├── app_es.arb
│ ├── app_fr.arb
│ ├── app_he.arb
│ ├── app_hi.arb
│ ├── app_hu.arb
│ ├── app_id.arb
│ ├── app_it.arb
│ ├── app_ka.arb
│ ├── app_nl.arb
│ ├── app_pl.arb
│ ├── app_pt.arb
│ ├── app_tr.arb
│ ├── app_uk.arb
│ └── app_zh.arb
├── main.dart
├── services
│ ├── audio_handler.dart
│ ├── audio_manager.dart
│ ├── data_manager.dart
│ ├── download_manager.dart
│ ├── ext_storage.dart
│ └── lyrics_service.dart
├── style
│ ├── appColors.dart
│ └── appTheme.dart
└── ui
│ ├── aboutPage.dart
│ ├── homePage.dart
│ ├── localSongsPage.dart
│ ├── morePage.dart
│ ├── player.dart
│ ├── playlistPage.dart
│ ├── playlistsPage.dart
│ ├── rootPage.dart
│ ├── searchPage.dart
│ ├── userLikedSongsPage.dart
│ └── userPlaylistsPage.dart
├── pubspec.lock
├── pubspec.yaml
└── test
└── widget_test.dart
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
13 | custom: ['https://www.buymeacoffee.com/gokadzev18'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
14 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.yml:
--------------------------------------------------------------------------------
1 | name: 🐞 Issue Report
2 | description: Report a issue in Musify
3 | labels: [bug]
4 | body:
5 |
6 | - type: textarea
7 | id: reproduce-steps
8 | attributes:
9 | label: Steps to reproduce
10 | description: Provide an example of the issue.
11 | placeholder: |
12 | Example:
13 | 1. First step
14 | 2. Second step
15 | 3. Issue here
16 | validations:
17 | required: true
18 |
19 | - type: textarea
20 | id: expected-behavior
21 | attributes:
22 | label: Expected behavior
23 | placeholder: |
24 | Example:
25 | "This should happen..."
26 | validations:
27 | required: true
28 |
29 | - type: textarea
30 | id: actual-behavior
31 | attributes:
32 | label: Actual behavior
33 | placeholder: |
34 | Example:
35 | "This happened instead..."
36 | validations:
37 | required: true
38 |
39 | - type: input
40 | id: musify-version
41 | attributes:
42 | label: Musify version
43 | description: |
44 | You can find your Musify version in **Settings**.
45 | placeholder: |
46 | Example: "1.0.0"
47 | validations:
48 | required: true
49 |
50 | - type: input
51 | id: android-version
52 | attributes:
53 | label: Android version
54 | description: |
55 | You can find this somewhere in your Android settings.
56 | placeholder: |
57 | Example: "Android 12"
58 | validations:
59 | required: true
60 |
61 | - type: textarea
62 | id: other-details
63 | attributes:
64 | label: Other details
65 | placeholder: |
66 | Additional details and attachments.
67 | - type: checkboxes
68 | id: acknowledgements
69 | attributes:
70 | label: Acknowledgements
71 | description: Your issue will be closed if you haven't done these steps.
72 | options:
73 | - label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open issue.
74 | required: true
75 | - label: I have written a short but informative title.
76 | required: true
77 | - label: I have updated the app to latest version **[Latest](https://github.com/gokadzev/Musify/releases)**.
78 | required: true
79 | - label: I will fill out all
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.yml:
--------------------------------------------------------------------------------
1 | name: ⭐ Feature request
2 | description: Suggest a feature to improve the app
3 | labels: [feature request]
4 | body:
5 |
6 | - type: textarea
7 | id: feature-description
8 | attributes:
9 | label: Describe your suggested feature
10 | description: How can an existing source be improved?
11 | placeholder: |
12 | Example:
13 | "It should work like this..."
14 | validations:
15 | required: true
16 |
17 | - type: textarea
18 | id: other-details
19 | attributes:
20 | label: Other details
21 | placeholder: |
22 | Additional details and attachments.
23 | - type: checkboxes
24 | id: acknowledgements
25 | attributes:
26 | label: Acknowledgements
27 | description: Your issue will be closed if you haven't done these steps.
28 | options:
29 | - label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open issue.
30 | required: true
31 | - label: I have written a short but informative title.
32 | required: true
33 | - label: I will fill out all of the requested information in this form.
34 | required: true
35 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | on: workflow_dispatch
2 | name: Test, Build and Release apk
3 | env:
4 | PROPERTIES_PATH: "./android/key.properties"
5 | jobs:
6 | build:
7 | name: Build APK
8 | runs-on: ubuntu-latest
9 |
10 | steps:
11 | - uses: actions/checkout@v3
12 |
13 | # Setup Java environment in order to build the Android app.
14 | - uses: actions/setup-java@v3
15 | with:
16 | distribution: "zulu"
17 | java-version: "12.x"
18 |
19 |
20 | # Gradle cache for faster builds
21 | - uses: actions/cache@v3
22 | with:
23 | path: |
24 | ~/.gradle/caches
25 | ~/.gradle/wrapper
26 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
27 | restore-keys: |
28 | ${{ runner.os }}-gradle-
29 | # Setup the flutter environment.
30 | - uses: subosito/flutter-action@v2
31 | with:
32 | channel: "stable"
33 |
34 | #
35 | - run: |
36 | echo keyPassword=\${{ secrets.KEY_STORE }} > ${{env.PROPERTIES_PATH}}
37 | echo storePassword=\${{ secrets.KEY_PASSWORD }} >> ${{env.PROPERTIES_PATH}}
38 | echo keyAlias=\${{ secrets.KEY_ALIAS }} >> ${{env.PROPERTIES_PATH}}
39 | #
40 | - run: echo "${{ secrets.KEYSTORE2 }}" | base64 --decode > android/app/key.jks
41 |
42 | # Get flutter dependencies.
43 | - run: flutter pub get
44 | # Check for any formatting issues in the code.
45 | - run: flutter format --set-exit-if-changed .
46 | # Statically analyze the Dart code for any errors.
47 | - run: flutter analyze .
48 | # Build arch apks.
49 | - run: flutter build apk --release --split-per-abi
50 | # Upload arm64 generated apk to the artifacts.
51 | - uses: actions/upload-artifact@v3
52 | with:
53 | name: Musify_arm64-v8a.apk
54 | path: build/app/outputs/apk/release/app-arm64-v8a-release.apk
55 | # Build universal apk.
56 | - run: flutter build apk --release
57 | # Upload universal generated apk to the artifacts.
58 | - uses: actions/upload-artifact@v3
59 | with:
60 | name: Musify.apk
61 | path: build/app/outputs/apk/release/app-release.apk
--------------------------------------------------------------------------------
/.github/workflows/pc.yml:
--------------------------------------------------------------------------------
1 | on: workflow_dispatch
2 | name: Test, Build and Release PC
3 | jobs:
4 | build-and-release-linux:
5 | runs-on: ubuntu-latest
6 |
7 | steps:
8 | - uses: actions/checkout@v2
9 | - uses: subosito/flutter-action@v2
10 | with:
11 | channel: 'stable'
12 | - name: Install dependencies
13 | run: sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev
14 | - name: Install project dependencies
15 | run: flutter pub get
16 | - name: Generate intermediates
17 | run: flutter pub run build_runner build --delete-conflicting-outputs
18 | - name: Enable linux build
19 | run: flutter config --enable-linux-desktop
20 | - name: Build artifacts
21 | run: flutter build linux --release
22 | - name: Archive Release
23 | uses: thedoctor0/zip-release@master
24 | with:
25 | type: 'zip'
26 | filename: Musify-linux.zip
27 | directory: build/linux/x64/release/bundle
28 | - name: Linux Release
29 | uses: actions/upload-artifact@v3
30 | with:
31 | name: Musify-linux.zip
32 | path: build/linux/x64/release/bundle/Musify-linux.zip
33 |
34 |
35 | build-and-release-windows:
36 | runs-on: windows-latest
37 |
38 | steps:
39 | - uses: actions/checkout@v2
40 | - uses: subosito/flutter-action@v2
41 | with:
42 | channel: 'stable'
43 | - name: Install project dependencies
44 | run: flutter pub get
45 | - name: Generate intermediates
46 | run: flutter pub run build_runner build --delete-conflicting-outputs
47 | - name: Enable windows build
48 | run: flutter config --enable-windows-desktop
49 | - name: Build artifacts
50 | run: flutter build windows --release
51 | - name: Archive Release
52 | uses: thedoctor0/zip-release@master
53 | with:
54 | type: 'zip'
55 | filename: Musify-windows.zip
56 | directory: build/windows/runner/Release
57 | - name: Windows Release
58 | uses: actions/upload-artifact@v3
59 | with:
60 | name: Musify-windows.zip
61 | path: build/windows/runner/Release/Musify-windows.zip
62 |
--------------------------------------------------------------------------------
/.github/workflows/pre.yml:
--------------------------------------------------------------------------------
1 | on: workflow_dispatch
2 | name: Test, Build and Pre Release apk
3 | env:
4 | PROPERTIES_PATH: "./android/key.properties"
5 | jobs:
6 | build:
7 | name: Build APK
8 | runs-on: ubuntu-latest
9 |
10 | steps:
11 | - uses: actions/checkout@v3
12 |
13 | # Setup Java environment in order to build the Android app.
14 | - uses: actions/setup-java@v3
15 | with:
16 | distribution: "zulu"
17 | java-version: "12.x"
18 |
19 |
20 | # Gradle cache for faster builds
21 | - uses: actions/cache@v3
22 | with:
23 | path: |
24 | ~/.gradle/caches
25 | ~/.gradle/wrapper
26 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
27 | restore-keys: |
28 | ${{ runner.os }}-gradle-
29 | # Setup the flutter environment.
30 | - uses: subosito/flutter-action@v2
31 | with:
32 | channel: "stable"
33 |
34 | #
35 | - run: |
36 | echo keyPassword=\${{ secrets.KEY_STORE }} > ${{env.PROPERTIES_PATH}}
37 | echo storePassword=\${{ secrets.KEY_PASSWORD }} >> ${{env.PROPERTIES_PATH}}
38 | echo keyAlias=\${{ secrets.KEY_ALIAS }} >> ${{env.PROPERTIES_PATH}}
39 | #
40 | - run: echo "${{ secrets.KEYSTORE2 }}" | base64 --decode > android/app/key.jks
41 |
42 | # Get flutter dependencies.
43 | - run: flutter pub get
44 | # Check for any formatting issues in the code.
45 | - run: flutter format --set-exit-if-changed .
46 | # Statically analyze the Dart code for any errors.
47 | - run: flutter analyze .
48 | # Build universal apk.
49 | - run: flutter build apk --release
50 | - uses: svenstaro/upload-release-action@v2
51 | with:
52 | repo_name: gokadzev/Musify
53 | repo_token: ${{ secrets.GITHUB_TOKEN }}
54 | file: build/app/outputs/apk/release/app-release.apk
55 | asset_name: Musify.apk
56 | tag: ${{ github.ref }}
57 | prerelease: true
58 | overwrite: true
59 | body: "New Musify Pre-Release! [only for testing purposes]"
60 |
--------------------------------------------------------------------------------
/.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 | .dart_tool/
26 | .flutter-plugins
27 | .flutter-plugins-dependencies
28 | .packages
29 | .pub-cache/
30 | .pub/
31 | /build/
32 |
33 | # Web related
34 | lib/generated_plugin_registrant.dart
35 |
36 | # Symbolication related
37 | app.*.symbols
38 |
39 | # Obfuscation related
40 | app.*.map.json
41 |
42 | # Exceptions to above rules.
43 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
44 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: 1ad9baa8b99a2897c20f9e6e54d3b9b359ade314
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Musify
4 | Music Streaming and Downloading app made in Flutter!
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | Features
13 |
14 | Online Song Search :mag:
15 | Streaming Support :musical_note:
16 | Download Support :arrow_down:
17 | Play Local / Downloaded Songs Support :open_file_folder:
18 | High Quality mp3 / m4a / flac Format :fire:
19 | Lyrics Support :pencil:
20 | SponsorBlock Support :scissors:
21 | No Ads :no_entry_sign:
22 | No Subscriptions :dollar:
23 | 12 Supported Languages :us:
24 | Material UI & Accent Colors :art:
25 |
26 |
27 | ---
28 |
29 |
Screenshots
30 |
31 |
36 |
37 | ---
38 |
39 |
40 |
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | linter:
2 | rules:
3 | - always_declare_return_types
4 | - annotate_overrides
5 | - avoid_bool_literals_in_conditional_expressions
6 | - avoid_classes_with_only_static_members
7 | - avoid_empty_else
8 | - avoid_function_literals_in_foreach_calls
9 | - avoid_init_to_null
10 | - avoid_null_checks_in_equality_operators
11 | - avoid_print
12 | - avoid_relative_lib_imports
13 | - avoid_renaming_method_parameters
14 | - avoid_return_types_on_setters
15 | - avoid_returning_null
16 | - avoid_returning_null_for_future
17 | - avoid_returning_null_for_void
18 | - avoid_returning_this
19 | - avoid_shadowing_type_parameters
20 | - avoid_single_cascade_in_expression_statements
21 | - avoid_types_as_parameter_names
22 | - avoid_unnecessary_containers
23 | - avoid_unused_constructor_parameters
24 | - await_only_futures
25 | - camel_case_types
26 | - cancel_subscriptions
27 | - comment_references
28 | - constant_identifier_names
29 | - control_flow_in_finally
30 | - directives_ordering
31 | - empty_catches
32 | - empty_constructor_bodies
33 | - empty_statements
34 | - hash_and_equals
35 | - implementation_imports
36 | - iterable_contains_unrelated_type
37 | - library_names
38 | - library_prefixes
39 | - list_remove_unrelated_type
40 | - no_adjacent_strings_in_list
41 | - no_duplicate_case_values
42 | - no_logic_in_create_state
43 | - non_constant_identifier_names
44 | - noop_primitive_operations
45 | - null_closures
46 | - omit_local_variable_types
47 | - overridden_fields
48 | - package_api_docs
49 | - package_names
50 | - package_prefixed_library_names
51 | - prefer_adjacent_string_concatenation
52 | - prefer_collection_literals
53 | - prefer_conditional_assignment
54 | - prefer_const_constructors
55 | - prefer_contains
56 | - prefer_equal_for_default_values
57 | - prefer_final_fields
58 | - prefer_final_locals
59 | - prefer_generic_function_type_aliases
60 | - prefer_initializing_formals
61 | - prefer_interpolation_to_compose_strings
62 | - prefer_is_empty
63 | - prefer_is_not_empty
64 | - prefer_null_aware_operators
65 | - prefer_single_quotes
66 | - prefer_typing_uninitialized_variables
67 | - recursive_getters
68 | - require_trailing_commas
69 | - sized_box_for_whitespace
70 | - slash_for_doc_comments
71 | - sort_child_properties_last
72 | - sort_constructors_first
73 | - sort_pub_dependencies
74 | - sort_unnamed_constructors_first
75 | - test_types_in_equals
76 | - throw_in_finally
77 | - type_init_formals
78 | - unawaited_futures
79 | - unnecessary_await_in_return
80 | - unnecessary_brace_in_string_interps
81 | - unnecessary_const
82 | - unnecessary_getters_setters
83 | - unnecessary_lambdas
84 | - unnecessary_new
85 | - unnecessary_null_aware_assignments
86 | - unnecessary_parenthesis
87 | - unnecessary_statements
88 | - unnecessary_this
89 | - unrelated_type_equality_checks
90 | - use_colored_box
91 | - use_decorated_box
92 | - use_function_type_syntax_for_parameters
93 | - use_is_even_rather_than_modulo
94 | - use_named_constants
95 | - use_rethrow_when_possible
96 | - use_super_parameters
97 | - valid_regexps
98 | - void_checks
--------------------------------------------------------------------------------
/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 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 | flutterVersionCode = '1'
17 | }
18 |
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 | flutterVersionName = '1.0'
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | apply plugin: 'kotlin-android'
26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
27 |
28 | def keystoreProperties = new Properties()
29 | def keystorePropertiesFile = rootProject.file('key.properties')
30 | if (keystorePropertiesFile.exists()) {
31 | keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
32 | }
33 |
34 | def lifecycle_version = "2.4.0"
35 |
36 | android {
37 | compileSdkVersion 33
38 | ndkVersion flutter.ndkVersion
39 |
40 | compileOptions {
41 | sourceCompatibility JavaVersion.VERSION_1_8
42 | targetCompatibility JavaVersion.VERSION_1_8
43 | }
44 |
45 | kotlinOptions {
46 | jvmTarget = '1.8'
47 | }
48 |
49 | sourceSets {
50 | main.java.srcDirs += 'src/main/kotlin'
51 | }
52 |
53 | lintOptions {
54 | checkReleaseBuilds false
55 | abortOnError false
56 | }
57 |
58 | defaultConfig {
59 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
60 | applicationId "com.gokadzev.musify"
61 | minSdkVersion 21
62 | targetSdkVersion 33
63 | versionCode flutterVersionCode.toInteger()
64 | versionName flutterVersionName
65 | multiDexEnabled true
66 | }
67 |
68 | signingConfigs {
69 | release {
70 | //From decoded key
71 | storeFile = file('key.jks')
72 |
73 | //From key.properties
74 | keyAlias keystoreProperties['keyAlias']
75 | keyPassword keystoreProperties['keyPassword']
76 | storePassword keystoreProperties['storePassword']
77 | }
78 | }
79 |
80 | buildTypes {
81 | release {
82 | // TODO: Add your own signing config for the release build.
83 | // Signing with the debug keys for now, so `flutter run --release` works.
84 | signingConfig signingConfigs.release
85 | shrinkResources false
86 | }
87 | }
88 |
89 | }
90 |
91 | flutter {
92 | source '../..'
93 | }
94 |
95 | dependencies {
96 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
97 | implementation 'com.android.support:multidex:1.0.3'
98 | implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
99 | implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
100 | }
101 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
16 |
17 |
22 |
23 |
26 |
27 |
28 |
36 |
37 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/gokadzev/musify/MainActivity.kt:
--------------------------------------------------------------------------------
1 | import android.os.Build
2 | import android.os.Bundle
3 | import androidx.core.view.WindowCompat
4 | import io.flutter.embedding.android.FlutterActivity
5 |
6 | class MainActivity : FlutterActivity() {
7 | override fun onCreate(savedInstanceState: Bundle?) {
8 | // Aligns the Flutter view vertically with the window.
9 | WindowCompat.setDecorFitsSystemWindows(getWindow(), false)
10 |
11 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
12 | // Disable the Android splash screen fade out animation to avoid
13 | // a flicker before the similar frame is drawn in Flutter.
14 | splashScreen.setOnExitAnimationListener { splashScreenView -> splashScreenView.remove() }
15 | }
16 |
17 | super.onCreate(savedInstanceState)
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-hdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/audio_service_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-hdpi/audio_service_pause.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/audio_service_play_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-hdpi/audio_service_play_arrow.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/audio_service_skip_next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-hdpi/audio_service_skip_next.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/audio_service_skip_previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-hdpi/audio_service_skip_previous.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/audio_service_stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-hdpi/audio_service_stop.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-hdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-mdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/audio_service_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-mdpi/audio_service_pause.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/audio_service_play_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-mdpi/audio_service_play_arrow.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/audio_service_skip_next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-mdpi/audio_service_skip_next.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/audio_service_skip_previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-mdpi/audio_service_skip_previous.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/audio_service_stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-mdpi/audio_service_stop.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-mdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-hdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-night-hdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-hdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-night-hdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-mdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-night-mdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-mdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-night-mdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-night-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-night-xhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-night-xhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-night-xxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xxxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-night-xxxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-night/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/audio_service_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xhdpi/audio_service_pause.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/audio_service_play_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xhdpi/audio_service_play_arrow.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/audio_service_skip_next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xhdpi/audio_service_skip_next.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/audio_service_skip_previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xhdpi/audio_service_skip_previous.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/audio_service_stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xhdpi/audio_service_stop.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/audio_service_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxhdpi/audio_service_pause.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/audio_service_play_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxhdpi/audio_service_play_arrow.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/audio_service_skip_next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxhdpi/audio_service_skip_next.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/audio_service_skip_previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxhdpi/audio_service_skip_previous.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/audio_service_stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxhdpi/audio_service_stop.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxxhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/audio_service_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxxhdpi/audio_service_pause.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/audio_service_play_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxxhdpi/audio_service_play_arrow.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/audio_service_skip_next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxxhdpi/audio_service_skip_next.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/audio_service_skip_previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxxhdpi/audio_service_skip_previous.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/audio_service_stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxxhdpi/audio_service_stop.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable-xxxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/drawable/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/launcher_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/mipmap-hdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/mipmap-mdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/raw/keep.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night-v31/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
18 |
21 |
22 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
18 |
21 |
22 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values-v31/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
18 |
21 |
22 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #191919
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
18 |
21 |
22 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.7.10'
3 | repositories {
4 | google()
5 | mavenCentral()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:7.2.2'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | mavenCentral()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | }
25 | subprojects {
26 | project.evaluationDependsOn(':app')
27 | }
28 |
29 | task clean(type: Delete) {
30 | delete rootProject.buildDir
31 | }
32 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
7 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4 | def properties = new Properties()
5 |
6 | assert localPropertiesFile.exists()
7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
8 |
9 | def flutterSdkPath = properties.getProperty("flutter.sdk")
10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
12 |
--------------------------------------------------------------------------------
/assets/db/playlists.db.json:
--------------------------------------------------------------------------------
1 | [{
2 | "ytid": "PLgzTt0k8mXzEk586ze4BjvDXR7c-TUSnx",
3 | "title": "Top 50 Global",
4 | "subtitle": "Just Updated",
5 | "header_desc": "Top 50 Global Song.",
6 | "type": "playlist",
7 | "image": "https://charts-images.scdn.co/assets/locale_en/regional/daily/region_global_large.jpg",
8 | "list": []
9 | },
10 | {
11 | "ytid": "PLoumn5BIsUDd3IH7MVw2XiW9nQKzCFy4O",
12 | "title": "Best Pop Music Playlist 2022 - Most Listened Pop Songs 2022 (Today's Top Pop Hits 2022)",
13 | "subtitle": "Just Updated",
14 | "header_desc": "We recommend you to check other playlists or our favorite music charts. If you enjoyed listening to this one, maybe you",
15 | "type": "playlist",
16 | "image": "https://i.scdn.co/image/ab67706c0000bebbc14667db36e06ca21c2746fb",
17 | "list": []
18 | },
19 | {
20 | "ytid": "PLmQPPVKNGMHipaJbw0lHPuGPuKQDJkcdn",
21 | "title": "Lofi Remixes",
22 | "subtitle": "Just Updated",
23 | "header_desc": "",
24 | "type": "playlist",
25 | "image": "https://i.scdn.co/image/ab67616d0000b273ceeda3baf08689981f6a17a5",
26 | "list": []
27 | },
28 | {
29 | "ytid": "PLPZdY4vhqvRAKdgI75eWn5XM0gPqs3QMY",
30 | "title": "M+ike Remixes",
31 | "subtitle": "Just Updated",
32 | "header_desc": "",
33 | "type": "playlist",
34 | "image": "https://images.genius.com/593f78ac98312b1e6149cb9671a6bc47.500x500x1.jpg",
35 | "list": []
36 | },
37 | {
38 | "ytid": "PLHg022HMFzFDMNp9xBGy3sARnqxaPl3PG",
39 | "title": "Car Music 2022",
40 | "subtitle": "Just Updated",
41 | "header_desc": "Car Music 2022 - Best Car Music Playlist 2022 - Car Music Mix (Songs for Car Driving)",
42 | "type": "playlist",
43 | "image": "https://i.scdn.co/image/ab67706c0000bebbc82624b873d6a3392b0ab9cc",
44 | "list": []
45 | },
46 | {
47 | "ytid": "PLSR9lWowvoE3A9i4JVVHtQFjlJt0_LItG",
48 | "title": "TikTok Songs 2022 - Tik Tok Music - Best TikTok Songs 2022",
49 | "subtitle": "Just Updated",
50 | "header_desc": "TikTok Songs 2022 - Tik Tok Music - Best TikTok Songs 2022 Every week, we update our playlist with the latest hits. The",
51 | "type": "playlist",
52 | "image": "https://i.scdn.co/image/ab67616d0000b2739da92b8aa7cbcd57a20fe10e",
53 | "list": []
54 | },
55 | {
56 | "ytid": "PLm5t4IueiREEegTqfYaVB3aD5-ClBd5Dg",
57 | "title": "sped up songs",
58 | "subtitle": "Just Updated",
59 | "header_desc": "150%",
60 | "type": "playlist",
61 | "image": "https://i.scdn.co/image/ab67706f0000000328f3caa600067067bb348a0a",
62 | "list": []
63 | },
64 | {
65 | "ytid": "PLw9U13gRyHys_YyMKCWuG2gYQ1eG-vQv4",
66 | "title": "Big on the internet",
67 | "subtitle": "Just Updated",
68 | "header_desc": "",
69 | "type": "playlist",
70 | "image": "https://i.scdn.co/image/ab67706f000000030cff82b06291045fe23facaf",
71 | "list": []
72 | },
73 | {
74 | "ytid": "PLgzTt0k8mXzHcKebL8d0uYHfawiARhQja",
75 | "title": "Best Sad and Emotional Songs - Spotify Playlist 2022",
76 | "subtitle": "Just Updated",
77 | "header_desc": "If you are in a sad mood or you just want to listen to some sad songs and emotional songs, this is the perfect playlist ",
78 | "type": "playlist",
79 | "image": "https://i.scdn.co/image/ab67706c0000bebba7222f1f28cf4322f99585f1",
80 | "list": []
81 | },
82 | {
83 | "ytid": "RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU",
84 | "title": "Pop Certified",
85 | "subtitle": "Just Updated",
86 | "header_desc": "",
87 | "type": "playlist",
88 | "image": "https://i.scdn.co/image/ab67616d0000b2736ad4fa118d28a41fc649c8e8",
89 | "list": []
90 | },
91 | {
92 | "ytid": "RDCLAK5uy_kA_dvd-bpRQ98y6LwOjAnhQL5lyjNnZYA",
93 | "title": "Best New Indie",
94 | "subtitle": "Just Updated",
95 | "header_desc": "",
96 | "type": "playlist",
97 | "image": "https://i.scdn.co/image/ab67706c0000bebb252c20e18078d26d0450605b",
98 | "list": []
99 | },
100 | {
101 | "ytid": "RDCLAK5uy_no33oh6TOe0vPTFGabR24wAu3NeiVvc-Q",
102 | "title": "Electromix",
103 | "subtitle": "Just Updated",
104 | "header_desc": "",
105 | "type": "playlist",
106 | "image": "https://i.scdn.co/image/ab67616d0000b273a66c1376051e1c5228df9733",
107 | "list": []
108 | },
109 | {
110 | "ytid": "RDCLAK5uy_n0oLcyKJhNW8BmrnMySAoVuLjRZfgozG0",
111 | "title": "Energizing EDM",
112 | "subtitle": "Just Updated",
113 | "header_desc": "",
114 | "type": "playlist",
115 | "image": "https://i.scdn.co/image/ab67706c0000bebb10d786ec8874e176f92c49d8",
116 | "list": []
117 | },
118 | {
119 | "ytid": "RDCLAK5uy_lHUYsU7VTxndTCtf-ofbHDsvQWspcFBJ8",
120 | "title": "Unstoppable Pop",
121 | "subtitle": "Just Updated",
122 | "header_desc": "",
123 | "type": "playlist",
124 | "image": "https://i.scdn.co/image/ab67706c0000bebb0885e7a2c6186017bbb392a0",
125 | "list": []
126 | },
127 | {
128 | "ytid": "RDCLAK5uy_n0TxkLvMf0yENdVCRD31Oes1XEBoJgpIU",
129 | "title": "Electronic Motivation",
130 | "subtitle": "Just Updated",
131 | "header_desc": "",
132 | "type": "playlist",
133 | "image": "https://i.scdn.co/image/ab67706c0000bebb3ce718571dd7ac56a0c15f25",
134 | "list": []
135 | },
136 | {
137 | "ytid": "RDCLAK5uy_lrRVyinf4bGiN8dQ1jRWkVOMroYKAvnqE",
138 | "title": "Confidence Boost",
139 | "subtitle": "Just Updated",
140 | "header_desc": "",
141 | "type": "playlist",
142 | "image": "https://i.scdn.co/image/ab67616d0000b273411e532bde4068f5f301b22f",
143 | "list": []
144 | },
145 | {
146 | "ytid": "RDCLAK5uy_mpcC2CwnVbb6kBi_d99_FZvgG2QSi5ylo",
147 | "title": "Rock Adrenaline",
148 | "subtitle": "Just Updated",
149 | "header_desc": "",
150 | "type": "playlist",
151 | "image": "https://i.scdn.co/image/ab67616d0000b273bd0a1a068fe3b8e953682375",
152 | "list": []
153 | },
154 | {
155 | "ytid": "RDCLAK5uy_mnNGm2TBGoE7ciVFLrzepoNMWyreMuNlw",
156 | "title": "#ILoveAltPop",
157 | "subtitle": "Just Updated",
158 | "header_desc": "",
159 | "type": "playlist",
160 | "image": "https://i.scdn.co/image/ab67706f000000030ba1097327ab27f8ed29761f",
161 | "list": []
162 | },
163 | {
164 | "ytid": "RDCLAK5uy_mnBFITP45AFCdVtu8b7JfLFLbUZR46ObU",
165 | "title": "Essential EDM",
166 | "subtitle": "Just Updated",
167 | "header_desc": "",
168 | "type": "playlist",
169 | "image": "https://i.scdn.co/image/ab67616d0000b273727362a482b776115354a507",
170 | "list": []
171 | },
172 | {
173 | "ytid": "RDCLAK5uy_k-fiP0mCE_HlLqk-h15LlxGmjTCTn4_aA",
174 | "title": "House Rap Hits",
175 | "subtitle": "Just Updated",
176 | "header_desc": "",
177 | "type": "playlist",
178 | "image": "https://i.scdn.co/image/ab67616d0000b2734448c77918ba9ab6d63aadfb",
179 | "list": []
180 | },
181 | {
182 | "ytid": "RDCLAK5uy_nnZGCEPxzc5FASdbQVMufD25OfYBJlHqY",
183 | "title": "Modern Classical",
184 | "subtitle": "Just Updated",
185 | "header_desc": "",
186 | "type": "playlist",
187 | "image": "https://i.scdn.co/image/ab67616d0000b273c5c1aac2736bfb53fbbf943f",
188 | "list": []
189 | },
190 | {
191 | "ytid": "PL7zsB-C3aNu03RwSy2Bn3Ov3oaEReOlT5",
192 | "title": "Best Remixes Of Popular SONGS 2022 and 2023",
193 | "subtitle": "Just Updated",
194 | "header_desc": "Best Remixes Of Popular SONGS 2022 and 2023 Those are some of best remixes of popular songs for 2022, we hope u like th",
195 | "type": "playlist",
196 | "image": "https://i.scdn.co/image/ab67706c0000bebb445f93525180a82f1575087d",
197 | "list": []
198 | },
199 | {
200 | "ytid": "PLWEEt0QgQFInR8b2_sKk86VAGhLs_Iczf",
201 | "title": "OPM Top Hits: Original Pilipino Music 2022 (Pinoy Hits & Love Songs)",
202 | "subtitle": "Just Updated",
203 | "header_desc": "opm songs",
204 | "type": "playlist",
205 | "image": "https://i.scdn.co/image/ab67706c0000bebb5c6e74a654ff510d06bd1734",
206 | "list": []
207 | },
208 | {
209 | "ytid": "PLiy0XOfUv4hGbDDI0gx6sFqsYdcQ6zMWx",
210 | "title": "OPM 2000-2009 / Best Pinoy Songs Playlist 2000s Hits",
211 | "subtitle": "Just Updated",
212 | "header_desc": "Pinoy Rock Songs,Tagalog Hit Songs 2000, 2001, 2002,Filipino Songs Playlist 2003, 2004, 2005,OPM Songs 2006",
213 | "type": "playlist",
214 | "image": "https://i.scdn.co/image/ab67706c0000bebbc1aa43ecf170c86146b88e9a",
215 | "list": []
216 | },
217 | {
218 | "ytid": "PLfQAe5M2BkwCKimscRq-F9wkO5tUPY9TS",
219 | "title": "Mood Booster",
220 | "subtitle": "Just Updated",
221 | "header_desc": "",
222 | "type": "playlist",
223 | "image": "https://i.scdn.co/image/ab67706f00000003bd0e19e810bb4b55ab164a95",
224 | "list": []
225 | },
226 | {
227 | "ytid": "PLmYULo-LwF9Lsx-JRO0UN-dJWk_0pbd-L",
228 | "title": "Best of MrSuicideSheep",
229 | "subtitle": "Just Updated",
230 | "header_desc": "",
231 | "type": "playlist",
232 | "image": "https://i.scdn.co/image/ab67706c0000bebb5844370cd89c9055a53a9d1a",
233 | "list": []
234 | },
235 | {
236 | "ytid": "PLC1og_v3eb4hrv4wsqG1G5dsNZh9bIscJ",
237 | "title": "Trap Nation",
238 | "subtitle": "Just Updated",
239 | "header_desc": "",
240 | "type": "playlist",
241 | "image": "https://i.scdn.co/image/ab67706c0000bebbf7911965253c20f3210e3068",
242 | "list": []
243 | }
244 |
245 | ]
--------------------------------------------------------------------------------
/assets/images/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/assets/images/ic_launcher.png
--------------------------------------------------------------------------------
/assets/images/ic_launcher_background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/assets/images/ic_launcher_background.jpg
--------------------------------------------------------------------------------
/assets/images/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/assets/images/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/assets/images/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/assets/images/ic_launcher_round.png
--------------------------------------------------------------------------------
/assets/images/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/assets/images/splash.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/full_description.txt:
--------------------------------------------------------------------------------
1 | Musify is an app for streaming and downloading music. Its features include:
2 |
3 | * Online Song Search
4 | * Streaming Support
5 | * Download Support
6 | * Play Local / Downloaded Songs Supported
7 | * High Quality m4a / mp3 / flac Format
8 | * Lyrics Support
9 | * No Ads
10 | * No Subscriptions
11 | * SponsorBlock Support
12 | * 12 Supported Languages
13 | * Material UI & Accent Colors
14 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/fastlane/metadata/android/en-US/images/icon.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/fastlane/metadata/android/en-US/images/phoneScreenshots/01.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/fastlane/metadata/android/en-US/images/phoneScreenshots/02.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/03.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/fastlane/metadata/android/en-US/images/phoneScreenshots/03.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | Music Streaming and Downloading app
--------------------------------------------------------------------------------
/fonts/ubuntu.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AdityaJasrai/Project-Flutter---Musify---MusicApplication/830c5cd91550aba8d4a7e9485eab4dcbbd3b5cbe/fonts/ubuntu.ttf
--------------------------------------------------------------------------------
/l10n.yaml:
--------------------------------------------------------------------------------
1 | arb-dir: lib/localization
2 | template-arb-file: app_en.arb
3 | output-localization-file: app_localizations.dart
--------------------------------------------------------------------------------
/lib/API/musify.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 | import 'dart:math';
3 |
4 | import 'package:audio_service/audio_service.dart';
5 | import 'package:flutter/services.dart';
6 | import 'package:flutter/widgets.dart';
7 | import 'package:flutter_gen/gen_l10n/app_localizations.dart';
8 | import 'package:hive/hive.dart';
9 | import 'package:http/http.dart' as http;
10 | import 'package:musify/helper/formatter.dart';
11 | import 'package:musify/helper/mediaitem.dart';
12 | import 'package:musify/services/audio_handler.dart';
13 | import 'package:musify/services/audio_manager.dart';
14 | import 'package:musify/services/data_manager.dart';
15 | import 'package:musify/services/ext_storage.dart';
16 | import 'package:musify/services/lyrics_service.dart';
17 | import 'package:on_audio_query/on_audio_query.dart';
18 | import 'package:permission_handler/permission_handler.dart';
19 | import 'package:youtube_explode_dart/youtube_explode_dart.dart';
20 |
21 | final yt = YoutubeExplode();
22 | final OnAudioQuery _audioQuery = OnAudioQuery();
23 |
24 | final random = Random();
25 |
26 | List playlists = [];
27 | List userPlaylists = Hive.box('user').get('playlists', defaultValue: []);
28 | List userLikedSongsList = Hive.box('user').get('likedSongs', defaultValue: []);
29 | List suggestedPlaylists = [];
30 | List activePlaylist = [];
31 |
32 | final lyrics = ValueNotifier('null');
33 | String lastFetchedLyrics = 'null';
34 |
35 | int id = 0;
36 |
37 | Future fetchSongsList(String searchQuery) async {
38 | final List list = await yt.search.search(searchQuery);
39 | final searchedList = [
40 | for (final s in list)
41 | returnSongLayout(
42 | 0,
43 | s,
44 | )
45 | ];
46 |
47 | return searchedList;
48 | }
49 |
50 | Future get10Music(dynamic playlistid) async {
51 | final List playlistSongs =
52 | await getData('cache', 'playlist10Songs$playlistid') ?? [];
53 | if (playlistSongs.isEmpty) {
54 | var index = 0;
55 | await for (final song in yt.playlists.getVideos(playlistid).take(10)) {
56 | playlistSongs.add(
57 | returnSongLayout(
58 | index,
59 | song,
60 | ),
61 | );
62 | index += 1;
63 | }
64 |
65 | addOrUpdateData('cache', 'playlist10Songs$playlistid', playlistSongs);
66 | }
67 |
68 | return playlistSongs;
69 | }
70 |
71 | Future> getUserPlaylists() async {
72 | final playlistsByUser = [];
73 | for (final playlistID in userPlaylists) {
74 | final plist = await yt.playlists.get(playlistID);
75 | playlistsByUser.add({
76 | 'ytid': plist.id,
77 | 'title': plist.title,
78 | 'subtitle': 'Just Updated',
79 | 'header_desc': plist.description.length < 120
80 | ? plist.description
81 | : plist.description.substring(0, 120),
82 | 'type': 'playlist',
83 | 'image': '',
84 | 'list': []
85 | });
86 | }
87 | return playlistsByUser;
88 | }
89 |
90 | String addUserPlaylist(String playlistId, BuildContext context) {
91 | if (playlistId.length != 34) {
92 | return '${AppLocalizations.of(context)!.notYTlist}!';
93 | } else {
94 | userPlaylists.add(playlistId);
95 | addOrUpdateData('user', 'playlists', userPlaylists);
96 | return '${AppLocalizations.of(context)!.addedSuccess}!';
97 | }
98 | }
99 |
100 | void removeUserPlaylist(String playlistId) {
101 | userPlaylists.remove(playlistId);
102 | addOrUpdateData('user', 'playlists', userPlaylists);
103 | }
104 |
105 | Future addUserLikedSong(dynamic songId) async {
106 | userLikedSongsList
107 | .add(await getSongDetails(userLikedSongsList.length, songId));
108 | addOrUpdateData('user', 'likedSongs', userLikedSongsList);
109 | }
110 |
111 | void removeUserLikedSong(dynamic songId) {
112 | userLikedSongsList.removeWhere((song) => song['ytid'] == songId);
113 | addOrUpdateData('user', 'likedSongs', userLikedSongsList);
114 | }
115 |
116 | bool isSongAlreadyLiked(dynamic songId) {
117 | return userLikedSongsList.where((song) => song['ytid'] == songId).isNotEmpty;
118 | }
119 |
120 | Future getPlaylists([int? playlistsNum]) async {
121 | if (playlists.isEmpty) {
122 | playlists =
123 | json.decode(await rootBundle.loadString('assets/db/playlists.db.json'))
124 | as List;
125 | }
126 |
127 | if (playlistsNum != null) {
128 | if (suggestedPlaylists.isEmpty) {
129 | suggestedPlaylists =
130 | (playlists.toList()..shuffle()).take(playlistsNum).toList();
131 | }
132 | return suggestedPlaylists;
133 | } else {
134 | return playlists;
135 | }
136 | }
137 |
138 | Future searchPlaylist(String query) async {
139 | if (playlists.isEmpty) {
140 | playlists =
141 | json.decode(await rootBundle.loadString('assets/db/playlists.db.json'))
142 | as List;
143 | }
144 |
145 | return playlists
146 | .where(
147 | (playlist) =>
148 | playlist['title'].toLowerCase().contains(query.toLowerCase()),
149 | )
150 | .toList();
151 | }
152 |
153 | Future