-
-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from ChunhThanhDe/main
Add Music Page, User Profile and Favorite Songs
- Loading branch information
Showing
35 changed files
with
611 additions
and
61 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,7 +4,11 @@ A beautiful and interactive **Spotify Clone** built using Flutter. Show some ❤ | |
|
||
###### Contact for work, email: [email protected] | ||
|
||
<img src="assets/icons/spotify_logo.png" height="120px" alt="spotify logo"/> | ||
<br> | ||
|
||
<img src="assets/images/spotify_logo.png" alt="spotify logo"/> | ||
|
||
<br> | ||
|
||
![GitHub stars](https://img.shields.io/github/stars/Flutter-Journey/Spotify-With-Flutter?style=social) | ||
![GitHub forks](https://img.shields.io/github/forks/Flutter-Journey/Spotify-With-Flutter?style=social) | ||
|
@@ -18,39 +22,50 @@ A beautiful and interactive **Spotify Clone** built using Flutter. Show some ❤ | |
|
||
## 🎵 Overview | ||
|
||
**Spotify With Flutter** is a music streaming app inspired by Spotify, featuring a smooth user interface and core functionalities like song playback, playlists, and browsing music. Developed using Flutter, it is available on Android, iOS, and web platforms. | ||
**Spotify With Flutter** is a demo music streaming app inspired by Spotify, featuring a smooth user interface and basic functionalities like firebase login, play music, and favorites song screen. Developed using Flutter, it is available on Android, iOS | ||
|
||
> Note: This project uses mock data and is not affiliated with or integrated with Spotify’s official API. | ||
## 🖥️ Screens and Features | ||
|
||
## 🌟 Features | ||
- **Home Screen**: Displays playlists and recommended songs. | ||
- **Playlist Screen**: View and manage your playlists. | ||
- **Song Player Screen**: Play songs with full controls. | ||
- **Profile Screen**: View user information and favorite tracks. | ||
|
||
- **Music Streaming**: Stream your favorite songs seamlessly. | ||
- **Beautiful UI**: A modern and sleek design similar to the original Spotify app. | ||
- **Playlist Management**: Create and manage your playlists with ease. | ||
- **Search Functionality**: Search for your favorite songs, artists, and albums. | ||
- **Cross-Platform**: Available on Android, iOS, and web. | ||
## 🎨 Figma Design | ||
|
||
- [Light Mode Design](https://www.figma.com/community/file/1166665330965959412/spotify-redesign-free-ui-kit-light) | ||
- [Dark Mode Design](https://www.figma.com/community/file/1172466818809176172/spotify-redesign-free-ui-kit-dark-mode) | ||
|
||
## 🎮 Demo | ||
|
||
Check out how the app looks in action! You can view a demo [here](https://www.youtube.com/watch?v=demo_link). | ||
Check out how the app looks in action! You can view a demo [here](https://www.youtube.com/shorts/aEHOczCZQ00). | ||
|
||
<table> | ||
<tr> | ||
<td><img src="https://github.com/Flutter-Journey/Spotify-With-Flutter/blob/master/media/screenshot1.jpg" height="300px"></td> | ||
<td><img src="https://github.com/Flutter-Journey/Spotify-With-Flutter/blob/master/media/screenshot2.jpg" height="300px"></td> | ||
<td><img src="https://raw.githubusercontent.com/Flutter-Journey/Spotify-With-Flutter/refs/heads/main/media/gif/spotify_light.gif"></td> | ||
<td><img src="https://raw.githubusercontent.com/Flutter-Journey/Spotify-With-Flutter/refs/heads/main/media/gif/spotify_dark.gif"></td> | ||
</tr> | ||
</table> | ||
|
||
## 🏏 Screen | ||
|
||
<table> | ||
<tr> | ||
<td><img src="https://raw.githubusercontent.com/Flutter-Journey/Spotify-With-Flutter/refs/heads/main/media/image/login_screen.png"></td> | ||
<td><img src="https://raw.githubusercontent.com/Flutter-Journey/Spotify-With-Flutter/refs/heads/main/media/image/choose_mode_screen.png"></td> | ||
<td><img src="https://raw.githubusercontent.com/Flutter-Journey/Spotify-With-Flutter/refs/heads/main/media/image/home_screen.png"></td> | ||
</tr> | ||
</table> | ||
|
||
## 🛠️ Technologies Used | ||
|
||
- **Flutter**: Framework for building natively compiled applications. | ||
- **Dart**: The programming language used for Flutter development. | ||
- **Spotify API**: Integration with Spotify's API for fetching music data. | ||
- **Animations**: Smooth animations for enhancing the user experience. | ||
|
||
## 📚 References | ||
|
||
- [Official Flutter Documentation](https://flutter.dev/docs) | ||
- [Dart Documentation](https://dart.dev/guides) | ||
- [Spotify API Documentation](https://developer.spotify.com/documentation/web-api/) | ||
- **Firebase**: Backend as a Service for authentication, storage, and database. | ||
- **BLoC (Business Logic Component)**: For state management. | ||
- **Clean Architecture**: For scalable and maintainable code. | ||
|
||
## 🌟 Conclusion | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,10 @@ | ||
class AppUrls { | ||
static const coverFireStorage = 'https://firebasestorage.googleapis.com/v0/b/spotify-flutter-4aa82.appspot.com/o/covers%2F'; | ||
static const songFireStorage = 'https://firebasestorage.googleapis.com/v0/b/spotify-flutter-4aa82.appspot.com/o/songs%2F'; | ||
static const coverFireStorage = | ||
'https://firebasestorage.googleapis.com/v0/b/spotify-flutter-4aa82.appspot.com/o/covers%2F'; | ||
static const songFireStorage = | ||
'https://firebasestorage.googleapis.com/v0/b/spotify-flutter-4aa82.appspot.com/o/songs%2F'; | ||
static const temp = 'Son-Tung-'; | ||
static const mediaAlt = 'alt=media'; | ||
static const defaultAvatar = | ||
'https://cdn-icons-png.flaticon.com/512/10542/10542486.png'; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import 'package:spotify_with_flutter/domain/entities/auth/user.dart'; | ||
|
||
class UserModel { | ||
String? email; | ||
String? fullName; | ||
String? imageURL; | ||
|
||
UserModel({ | ||
this.email, | ||
this.fullName, | ||
this.imageURL, | ||
}); | ||
|
||
UserModel.fromJson(Map<String, dynamic> data) { | ||
email = data['email']; | ||
fullName = data['name']; | ||
imageURL = data['imageURL']; | ||
} | ||
} | ||
|
||
extension UserModelX on UserModel { | ||
UserEntity toEntity() { | ||
return UserEntity( | ||
email: email!, | ||
fullName: fullName!, | ||
imageURL: imageURL!, | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
import 'package:dartz/dartz.dart'; | ||
import 'package:spotify_with_flutter/core/usecase/usecase.dart'; | ||
import 'package:spotify_with_flutter/domain/repository/auth/auth.dart'; | ||
import 'package:spotify_with_flutter/service_locator.dart'; | ||
|
||
class GetUserUseCase implements UseCase<Either, dynamic> { | ||
@override | ||
Future<Either> call({params}) async { | ||
return await sl<AuthRepository>().getUser(); | ||
} | ||
} |
Oops, something went wrong.