├── ios
├── Runner
│ ├── Runner-Bridging-Header.h
│ ├── Assets.xcassets
│ │ ├── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ ├── 16.png
│ │ │ ├── 20.png
│ │ │ ├── 29.png
│ │ │ ├── 32.png
│ │ │ ├── 40.png
│ │ │ ├── 48.png
│ │ │ ├── 50.png
│ │ │ ├── 55.png
│ │ │ ├── 57.png
│ │ │ ├── 58.png
│ │ │ ├── 60.png
│ │ │ ├── 64.png
│ │ │ ├── 72.png
│ │ │ ├── 76.png
│ │ │ ├── 80.png
│ │ │ ├── 87.png
│ │ │ ├── 88.png
│ │ │ ├── 100.png
│ │ │ ├── 1024.png
│ │ │ ├── 114.png
│ │ │ ├── 120.png
│ │ │ ├── 128.png
│ │ │ ├── 144.png
│ │ │ ├── 152.png
│ │ │ ├── 167.png
│ │ │ ├── 172.png
│ │ │ ├── 180.png
│ │ │ ├── 196.png
│ │ │ ├── 216.png
│ │ │ ├── 256.png
│ │ │ └── 512.png
│ │ └── LaunchImage.imageset
│ │ │ ├── ic_splash.png
│ │ │ ├── ic_splash 1.png
│ │ │ ├── ic_splash 2.png
│ │ │ ├── README.md
│ │ │ └── Contents.json
│ ├── Runner.entitlements
│ ├── AppDelegate.swift
│ ├── GoogleService-Info.plist
│ ├── Info.plist
│ └── Base.lproj
│ │ ├── Main.storyboard
│ │ └── LaunchScreen.storyboard
├── Flutter
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ └── AppFrameworkInfo.plist
├── Runner.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── firebase_app_id_file.json
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── WorkspaceSettings.xcsettings
│ │ └── IDEWorkspaceChecks.plist
├── .gitignore
└── Podfile
├── assets
└── logo.png
├── web
├── favicon.png
├── icons
│ ├── Icon-192.png
│ ├── Icon-512.png
│ ├── Icon-maskable-192.png
│ └── Icon-maskable-512.png
├── .well-known
│ ├── apple-app-site-association
│ └── assetlinks.json
├── manifest.json
└── index.html
├── .github
├── screenshot_1.png
├── screenshot_2.png
└── screenshot_3.png
├── android
├── gradle.properties
├── app
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── ic_launcher-web.png
│ │ │ │ ├── playstore-icon.png
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ ├── ic_splash.png
│ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ ├── ic_action_play.png
│ │ │ │ │ ├── ic_action_heart.png
│ │ │ │ │ ├── ic_action_pause.png
│ │ │ │ │ ├── ic_action_skip_back.png
│ │ │ │ │ ├── ic_action_unheart.png
│ │ │ │ │ ├── ic_action_skip_forward.png
│ │ │ │ │ ├── ic_launcher_background.png
│ │ │ │ │ └── ic_launcher_foreground.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ ├── ic_splash.png
│ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ ├── ic_action_play.png
│ │ │ │ │ ├── ic_action_heart.png
│ │ │ │ │ ├── ic_action_pause.png
│ │ │ │ │ ├── ic_action_skip_back.png
│ │ │ │ │ ├── ic_action_unheart.png
│ │ │ │ │ ├── ic_action_skip_forward.png
│ │ │ │ │ ├── ic_launcher_background.png
│ │ │ │ │ └── ic_launcher_foreground.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ ├── ic_splash.png
│ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ ├── ic_launcher_background.png
│ │ │ │ │ └── ic_launcher_foreground.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ ├── ic_splash.png
│ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ ├── ic_launcher_background.png
│ │ │ │ │ └── ic_launcher_foreground.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ ├── ic_splash.png
│ │ │ │ │ ├── ic_launcher_background.png
│ │ │ │ │ └── ic_launcher_foreground.png
│ │ │ │ ├── raw
│ │ │ │ │ └── keep.xml
│ │ │ │ ├── mipmap-anydpi-v26
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ ├── drawable
│ │ │ │ │ ├── launch_background.xml
│ │ │ │ │ ├── launch_gradient_background.xml
│ │ │ │ │ └── animated_launch_icon.xml
│ │ │ │ ├── drawable-v21
│ │ │ │ │ ├── launch_background.xml
│ │ │ │ │ ├── launch_gradient_background.xml
│ │ │ │ │ └── animated_launch_icon.xml
│ │ │ │ ├── values
│ │ │ │ │ └── styles.xml
│ │ │ │ └── values-night
│ │ │ │ │ └── styles.xml
│ │ │ ├── kotlin
│ │ │ │ └── one
│ │ │ │ │ └── tear
│ │ │ │ │ └── tearmusic
│ │ │ │ │ └── MainActivity.kt
│ │ │ ├── java
│ │ │ │ └── io
│ │ │ │ │ └── flutter
│ │ │ │ │ └── app
│ │ │ │ │ └── FlutterMultiDexApplication.java
│ │ │ └── AndroidManifest.xml
│ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ └── profile
│ │ │ └── AndroidManifest.xml
│ ├── google-services.json
│ └── build.gradle
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
├── .gitignore
├── settings.gradle
└── build.gradle
├── changelog.md
├── fonts
└── Montserrat
│ ├── Montserrat-Black.otf
│ ├── Montserrat-Bold.otf
│ ├── Montserrat-Light.otf
│ ├── Montserrat-Thin.otf
│ ├── Montserrat-Italic.otf
│ ├── Montserrat-Medium.otf
│ ├── Montserrat-Regular.otf
│ ├── Montserrat-SemiBold.otf
│ ├── Montserrat-BoldItalic.otf
│ ├── Montserrat-ExtraBold.otf
│ ├── Montserrat-ExtraLight.otf
│ ├── Montserrat-ThinItalic.otf
│ ├── Montserrat-BlackItalic.otf
│ ├── Montserrat-LightItalic.otf
│ ├── Montserrat-MediumItalic.otf
│ ├── Montserrat-ExtraBoldItalic.otf
│ ├── Montserrat-SemiBoldItalic.otf
│ └── Montserrat-ExtraLightItalic.otf
├── lib
├── providers
│ ├── will_pop_provider.dart
│ ├── audio_stream_provider.dart
│ ├── current_music_provider.dart
│ ├── theme_provider.dart
│ └── navigator_provider.dart
├── ui
│ ├── common
│ │ ├── format.dart
│ │ └── image_color.dart
│ └── mobile
│ │ ├── common
│ │ ├── tm_back_button.dart
│ │ ├── tiles
│ │ │ ├── search_track_tile.dart
│ │ │ ├── artist_track_tile.dart
│ │ │ ├── album_track_tile.dart
│ │ │ ├── track_tile_preview.dart
│ │ │ ├── search_album_tile.dart
│ │ │ ├── search_playlist_tile.dart
│ │ │ ├── search_artist_tile.dart
│ │ │ ├── manual_match_tile.dart
│ │ │ ├── artist_artist_tile.dart
│ │ │ └── artist_album_tile.dart
│ │ ├── views
│ │ │ ├── playlist_track_tile.dart
│ │ │ ├── artist_view
│ │ │ │ ├── artist_header_button.dart
│ │ │ │ └── latest_release.dart
│ │ │ ├── content_list_view.dart
│ │ │ └── manual_match_view.dart
│ │ ├── player
│ │ │ ├── lyrics_view
│ │ │ │ ├── full_text.dart
│ │ │ │ ├── unavailable.dart
│ │ │ │ ├── subtitle.dart
│ │ │ │ └── rich_sync.dart
│ │ │ ├── image_placeholder.dart
│ │ │ └── track_image.dart
│ │ ├── settings
│ │ │ ├── settings_stats.dart
│ │ │ ├── settings_container.dart
│ │ │ ├── settings_switch.dart
│ │ │ └── settings_alert_dialog.dart
│ │ ├── profile_button.dart
│ │ ├── knob.dart
│ │ ├── view_menu_button.dart
│ │ ├── menu_button.dart
│ │ ├── bottom_sheet.dart
│ │ ├── filter_bar.dart
│ │ └── wallpaper.dart
│ │ ├── app.dart
│ │ └── pages
│ │ ├── library
│ │ ├── artist_loading_tile.dart
│ │ ├── album_loading_tile.dart
│ │ ├── track_loading_tile.dart
│ │ └── playlist_loading_tile.dart
│ │ └── search
│ │ └── top_result_container.dart
├── exceptionts.dart
├── models
│ ├── user_info.dart
│ ├── manual_match.dart
│ ├── model.dart
│ ├── segmented.dart
│ ├── playback.dart
│ ├── music
│ │ ├── images.dart
│ │ ├── artist.dart
│ │ ├── track.dart
│ │ ├── playlist.dart
│ │ ├── lyrics.dart
│ │ └── album.dart
│ ├── library.dart
│ ├── batch.dart
│ ├── search.dart
│ └── player_info.dart
├── utils.dart
├── player
│ └── media_control.dart
├── api
│ ├── base_api.dart
│ └── user_api.dart
├── firebase_options.dart
└── main.dart
├── .vscode
└── launch.json
├── README.md
├── .gitignore
├── .metadata
├── analysis_options.yaml
└── pubspec.yaml
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/assets/logo.png
--------------------------------------------------------------------------------
/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/web/favicon.png
--------------------------------------------------------------------------------
/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/.github/screenshot_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/.github/screenshot_1.png
--------------------------------------------------------------------------------
/.github/screenshot_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/.github/screenshot_2.png
--------------------------------------------------------------------------------
/.github/screenshot_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/.github/screenshot_3.png
--------------------------------------------------------------------------------
/web/icons/Icon-maskable-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/web/icons/Icon-maskable-192.png
--------------------------------------------------------------------------------
/web/icons/Icon-maskable-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/web/icons/Icon-maskable-512.png
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/changelog.md:
--------------------------------------------------------------------------------
1 | - new icons
2 | - improved animations
3 | - scrollbars
4 | - modal bottom sheets for views
5 | - bugfixes
6 |
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-Black.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-Black.otf
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-Bold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-Bold.otf
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-Light.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-Light.otf
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-Thin.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-Thin.otf
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-Italic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-Italic.otf
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-Medium.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-Medium.otf
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-Regular.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-Regular.otf
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-SemiBold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-SemiBold.otf
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-BoldItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-BoldItalic.otf
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-ExtraBold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-ExtraBold.otf
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-ExtraLight.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-ExtraLight.otf
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-ThinItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-ThinItalic.otf
--------------------------------------------------------------------------------
/android/app/src/main/res/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/ic_launcher-web.png
--------------------------------------------------------------------------------
/android/app/src/main/res/playstore-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/playstore-icon.png
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-BlackItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-BlackItalic.otf
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-LightItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-LightItalic.otf
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-MediumItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-MediumItalic.otf
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-ExtraBoldItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-ExtraBoldItalic.otf
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-SemiBoldItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-SemiBoldItalic.otf
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-hdpi/ic_splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-mdpi/ic_splash.png
--------------------------------------------------------------------------------
/fonts/Montserrat/Montserrat-ExtraLightItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/fonts/Montserrat/Montserrat-ExtraLightItalic.otf
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_splash.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/16.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/32.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/48.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/55.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/64.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/88.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/88.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_action_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-hdpi/ic_action_play.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_action_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-mdpi/ic_action_play.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_splash.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/128.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/172.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/172.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/196.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/196.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/216.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/216.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/256.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/512.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_action_heart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-hdpi/ic_action_heart.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_action_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-hdpi/ic_action_pause.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_action_heart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-mdpi/ic_action_heart.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_action_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-mdpi/ic_action_pause.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_action_skip_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-hdpi/ic_action_skip_back.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_action_unheart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-hdpi/ic_action_unheart.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_action_skip_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-mdpi/ic_action_skip_back.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_action_unheart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-mdpi/ic_action_unheart.png
--------------------------------------------------------------------------------
/android/app/src/main/res/raw/keep.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_action_skip_forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-hdpi/ic_action_skip_forward.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_action_skip_forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-mdpi/ic_action_skip_forward.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash 1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash 1.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash 2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash 2.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tearone/tearmusic/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/one/tear/tearmusic/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package one.tear.tearmusic
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/lib/providers/will_pop_provider.dart:
--------------------------------------------------------------------------------
1 | class WillPopProvider {
2 | bool Function()? _popper;
3 |
4 | bool Function()? get popper => _popper;
5 |
6 | void registerPopper(bool Function() value) {
7 | _popper = value;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/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-7.4-all.zip
6 |
--------------------------------------------------------------------------------
/web/.well-known/apple-app-site-association:
--------------------------------------------------------------------------------
1 | {
2 | "applinks": {
3 | "apps": [],
4 | "details": [
5 | {
6 | "appID": "MYUTW2GF6J.one.tear.tearmusic",
7 | "paths": [
8 | "*"
9 | ]
10 | }
11 | ]
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ios/firebase_app_id_file.json:
--------------------------------------------------------------------------------
1 | {
2 | "file_generated_by": "FlutterFire CLI",
3 | "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
4 | "GOOGLE_APP_ID": "1:860150371329:ios:9430cbf0de56c4ec651c00",
5 | "FIREBASE_PROJECT_ID": "tear-music",
6 | "GCM_SENDER_ID": "860150371329"
7 | }
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
--------------------------------------------------------------------------------
/web/.well-known/assetlinks.json:
--------------------------------------------------------------------------------
1 | [{
2 | "relation": ["delegate_permission/common.handle_all_urls"],
3 | "target": {
4 | "namespace": "android_app",
5 | "package_name": "one.tear.tearmusic",
6 | "sha256_cert_fingerprints":
7 | ["98:9F:DA:C2:3D:0A:A8:A3:C0:92:22:D5:20:1E:B5:47:80:76:53:A8:62:9C:E3:C7:08:32:E6:42:82:1D:7A:69"]
8 | }
9 | }]
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_gradient_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_gradient_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner/Runner.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.associated-domains
6 |
7 | applinks:music.tear.one
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/lib/ui/common/format.dart:
--------------------------------------------------------------------------------
1 | extension DurationFormat on Duration {
2 | String format() {
3 | return "${inHours > 0 ? '$inHours h ' : ''}${inMinutes % 60} mins";
4 | }
5 |
6 | String shortFormat() {
7 | return "${inHours > 0 ? '$inHours:' : ''}${(inMinutes % 60).toString().padLeft(inHours > 0 ? 2 : 0, '0')}:${(inSeconds % 60).toString().padLeft(2, '0')}";
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/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.
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/lib/ui/mobile/common/tm_back_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:provider/provider.dart';
3 | import 'package:tearmusic/providers/navigator_provider.dart';
4 |
5 | class TMBackButton extends StatelessWidget {
6 | const TMBackButton({Key? key}) : super(key: key);
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return BackButton(
11 | onPressed: () => context.read().pop(),
12 | );
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/lib/ui/mobile/common/tiles/search_track_tile.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:tearmusic/models/music/track.dart';
3 | import 'package:tearmusic/ui/mobile/common/tiles/track_tile.dart';
4 |
5 | class SearchTrackTile extends StatelessWidget {
6 | const SearchTrackTile(this.track, {Key? key}) : super(key: key);
7 |
8 | final MusicTrack track;
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return TrackTile(track);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/lib/exceptionts.dart:
--------------------------------------------------------------------------------
1 | class BaseRequestException {
2 | String cause;
3 |
4 | BaseRequestException(this.cause);
5 | }
6 |
7 | class AuthException extends BaseRequestException {
8 | AuthException(String cause) : super(cause);
9 | }
10 |
11 | class NotFoundException extends BaseRequestException {
12 | NotFoundException(String cause) : super(cause);
13 | }
14 |
15 | class UnknownRequestException extends BaseRequestException {
16 | UnknownRequestException(String cause) : super(cause);
17 | }
18 |
--------------------------------------------------------------------------------
/lib/ui/mobile/common/tiles/artist_track_tile.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:tearmusic/models/music/track.dart';
3 | import 'package:tearmusic/ui/mobile/common/tiles/track_tile.dart';
4 |
5 | class ArtistTrackTile extends StatelessWidget {
6 | const ArtistTrackTile(this.track, {Key? key}) : super(key: key);
7 |
8 | final MusicTrack track;
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return TrackTile(track, trailingDuration: true);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/lib/ui/mobile/common/views/playlist_track_tile.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:tearmusic/models/music/track.dart';
3 | import 'package:tearmusic/ui/mobile/common/tiles/track_tile.dart';
4 |
5 | class PlaylistTrackTile extends StatelessWidget {
6 | const PlaylistTrackTile(this.track, {Key? key}) : super(key: key);
7 |
8 | final MusicTrack track;
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return TrackTile(track, trailingDuration: true);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/lib/providers/audio_stream_provider.dart:
--------------------------------------------------------------------------------
1 | import 'dart:developer';
2 | import 'dart:io';
3 |
4 | class AudioStreamProvider {
5 | late final ServerSocket socket;
6 | late final HttpServer server;
7 |
8 | Future startServer() async {
9 | socket = await ServerSocket.bind("127.0.0.1", 0);
10 | server = HttpServer.listenOn(socket);
11 | log("Started proxy server on $socket");
12 | }
13 |
14 | Future stopServer({bool force = false}) async {
15 | await server.close(force: force);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/lib/ui/mobile/common/tiles/album_track_tile.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:tearmusic/models/music/track.dart';
3 | import 'package:tearmusic/ui/mobile/common/tiles/track_tile.dart';
4 |
5 | class AlbumTrackTile extends StatelessWidget {
6 | const AlbumTrackTile(this.track, {Key? key}) : super(key: key);
7 |
8 | final MusicTrack track;
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return TrackTile(track, leadingTrackNumber: true, trailingDuration: true);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ic_splash.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "ic_splash 1.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "ic_splash 2.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/models/user_info.dart:
--------------------------------------------------------------------------------
1 | import 'package:tearmusic/models/model.dart';
2 |
3 | class UserInfo extends Model {
4 | String username;
5 | String avatar;
6 |
7 | UserInfo({
8 | required String id,
9 | required Map json,
10 | required this.username,
11 | required this.avatar,
12 | }) : super(id: id, json: json, key: username, type: "user");
13 |
14 | factory UserInfo.decode(Map json) {
15 | return UserInfo(
16 | json: json,
17 | id: json["discord_id"],
18 | username: json["username"],
19 | avatar: json["avatar"],
20 | );
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/lib/ui/mobile/common/player/lyrics_view/full_text.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class LyricsFullText extends StatelessWidget {
4 | const LyricsFullText(this.fullText, {Key? key}) : super(key: key);
5 |
6 | final String fullText;
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return Padding(
11 | padding: const EdgeInsets.all(8.0),
12 | child: Text(
13 | fullText,
14 | style: const TextStyle(
15 | fontSize: 24.0,
16 | fontWeight: FontWeight.bold,
17 | ),
18 | ),
19 | );
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/utils.dart:
--------------------------------------------------------------------------------
1 | double rangeProgress({
2 | required final double a,
3 | required final double b,
4 | required final double c,
5 | }) {
6 | return c * (b - a) + a;
7 | }
8 |
9 | double progressValue({
10 | required final double min,
11 | required final double max,
12 | required final double value,
13 | }) {
14 | return (value - min) / (max - min);
15 | }
16 |
17 | double norm(double val, double minVal, double maxVal, double newMin, double newMax) {
18 | return newMin + (val - minVal) * (newMax - newMin) / (maxVal - minVal);
19 | }
20 |
21 | double inverseAboveOne(double n) {
22 | if (n > 1) return (1 - (1 - n) * -1);
23 | return n;
24 | }
25 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "name": "tearmusic",
9 | "request": "launch",
10 | "type": "dart"
11 | },
12 | {
13 | "name": "tearmusic (profile mode)",
14 | "request": "launch",
15 | "type": "dart",
16 | "flutterMode": "profile"
17 | },
18 | {
19 | "name": "tearmusic (release mode)",
20 | "request": "launch",
21 | "type": "dart",
22 | "flutterMode": "release"
23 | }
24 | ]
25 | }
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/lib/ui/mobile/common/player/image_placeholder.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class ImagePlaceholder extends StatelessWidget {
4 | const ImagePlaceholder({Key? key, this.large = false}) : super(key: key);
5 |
6 | final bool large;
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return SizedBox(
11 | width: 150.0,
12 | height: 150.0,
13 | child: ClipRRect(
14 | borderRadius: BorderRadius.circular(12.0),
15 | child: Image.network(
16 | "https://random.imagecdn.app/${large ? 400 : 200}/${large ? 400 : 200}?$key",
17 | width: 150.0,
18 | height: 150.0,
19 | fit: BoxFit.cover,
20 | ),
21 | ),
22 | );
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/models/manual_match.dart:
--------------------------------------------------------------------------------
1 | class ManualMatch {
2 | final String name;
3 | final String artist;
4 | final String imageUrl;
5 | final Duration duration;
6 | final String videoId;
7 |
8 | ManualMatch({
9 | required this.name,
10 | required this.artist,
11 | required this.imageUrl,
12 | required this.duration,
13 | required this.videoId,
14 | });
15 |
16 | factory ManualMatch.decode(Map json) {
17 | return ManualMatch(
18 | name: json['name'],
19 | artist: json['artist'],
20 | imageUrl: json['image'],
21 | duration: Duration(seconds: json['duration'].toInt()),
22 | videoId: json['video_id'],
23 | );
24 | }
25 |
26 | static List decodeList(List