From 2e266b85c2e4d286c9b3b210d7090ee522ee5168 Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Thu, 3 Aug 2023 17:23:12 +0200 Subject: [PATCH 1/6] recap component --- .idea/libraries/Dart_Packages.xml | 24 +++ .../little_post_recap_component.dart | 52 ++++++ .../lib/components/post_component.dart | 21 +-- .../components/profil_picture_component.dart | 33 ++++ .../lib/components/recap_component.dart | 111 +++++++++++++ .../lib/components/top_nav_bar_component.dart | 48 ++---- Sources/justMUSIC/lib/config/routes.dart | 21 +++ Sources/justMUSIC/lib/main.dart | 10 +- .../justMUSIC/lib/screens/user_screen.dart | 155 ++++++++++++++++++ 9 files changed, 418 insertions(+), 57 deletions(-) create mode 100644 Sources/justMUSIC/lib/components/little_post_recap_component.dart create mode 100644 Sources/justMUSIC/lib/components/profil_picture_component.dart create mode 100644 Sources/justMUSIC/lib/components/recap_component.dart create mode 100644 Sources/justMUSIC/lib/screens/user_screen.dart diff --git a/.idea/libraries/Dart_Packages.xml b/.idea/libraries/Dart_Packages.xml index 2795ffb..7f7c6f9 100644 --- a/.idea/libraries/Dart_Packages.xml +++ b/.idea/libraries/Dart_Packages.xml @@ -296,6 +296,27 @@ + + + + + + + + + + + + + + + + + + @@ -950,6 +971,9 @@ + + + diff --git a/Sources/justMUSIC/lib/components/little_post_recap_component.dart b/Sources/justMUSIC/lib/components/little_post_recap_component.dart new file mode 100644 index 0000000..2134adc --- /dev/null +++ b/Sources/justMUSIC/lib/components/little_post_recap_component.dart @@ -0,0 +1,52 @@ +import 'package:flutter/Material.dart'; +import 'package:google_fonts/google_fonts.dart'; + +import '../values/constants.dart'; + +class LittleCapsule extends StatelessWidget { + final bool isEmpty; + final DateTime date; + const LittleCapsule({super.key, required this.isEmpty, required this.date}); + + @override + Widget build(BuildContext context) { + if (isEmpty) { + return Flexible( + child: Container( + constraints: BoxConstraints(maxWidth: 45, maxHeight: 45), + decoration: BoxDecoration( + color: searchBarColor, + borderRadius: BorderRadius.circular(5), + border: Border.all(color: Color(0xFF282828), width: 1), + ), + child: const Center( + child: Icon( + Icons.rocket_launch, + color: Color(0xFF464646), + size: 18, + ), + ), + ), + ); + } + return Flexible( + child: Container( + constraints: BoxConstraints(maxWidth: 45, maxHeight: 45), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [bgModal, bgModal.withOpacity(0)], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + stops: [0, 1]), + borderRadius: BorderRadius.circular(5), + ), + child: Center( + child: Text( + date.day.toString(), + style: GoogleFonts.plusJakartaSans(color: Color(0xFF464646), fontWeight: FontWeight.w800, fontSize: 17), + ), + ), + ), + ); + } +} diff --git a/Sources/justMUSIC/lib/components/post_component.dart b/Sources/justMUSIC/lib/components/post_component.dart index 2118eee..7d17d20 100644 --- a/Sources/justMUSIC/lib/components/post_component.dart +++ b/Sources/justMUSIC/lib/components/post_component.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:gradient_borders/box_borders/gradient_box_border.dart'; +import 'package:justmusic/components/profil_picture_component.dart'; import 'package:text_scroll/text_scroll.dart'; import 'package:zoom_tap_animation/zoom_tap_animation.dart'; @@ -50,15 +51,7 @@ class _PostComponentState extends State with TickerProviderStateM Row( crossAxisAlignment: CrossAxisAlignment.end, children: [ - ClipOval( - child: SizedBox.fromSize( - // Image radius - child: Image( - image: NetworkImage(widget.post.user.pp), - width: 40, - ), - ), - ), + ProfilPictureComponent(user: widget.post.user), Expanded( flex: 8, child: Padding( @@ -237,15 +230,7 @@ class _PostComponentState extends State with TickerProviderStateM Row( crossAxisAlignment: CrossAxisAlignment.end, children: [ - ClipOval( - child: SizedBox.fromSize( - // Image radius - child: Image( - image: NetworkImage(widget.post.user.pp), - width: 40, - ), - ), - ), + ProfilPictureComponent(user: widget.post.user), Expanded( flex: 8, child: Padding( diff --git a/Sources/justMUSIC/lib/components/profil_picture_component.dart b/Sources/justMUSIC/lib/components/profil_picture_component.dart new file mode 100644 index 0000000..cd0ad72 --- /dev/null +++ b/Sources/justMUSIC/lib/components/profil_picture_component.dart @@ -0,0 +1,33 @@ +import 'package:flutter/Material.dart'; +import 'package:justmusic/screens/user_screen.dart'; + +import '../config/routes.dart'; +import '../model/User.dart'; + +class ProfilPictureComponent extends StatelessWidget { + final User user; + const ProfilPictureComponent({super.key, required this.user}); + + void _openDetail(BuildContext context) { + print("cc"); + Navigator.of(context).push(routeUser(user)); + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + _openDetail(context); + }, + child: ClipOval( + child: SizedBox.fromSize( + // Image radius + child: Image( + image: NetworkImage(user.pp), + width: 40, + ), + ), + ), + ); + } +} diff --git a/Sources/justMUSIC/lib/components/recap_component.dart b/Sources/justMUSIC/lib/components/recap_component.dart new file mode 100644 index 0000000..925734f --- /dev/null +++ b/Sources/justMUSIC/lib/components/recap_component.dart @@ -0,0 +1,111 @@ +import 'package:flutter/Material.dart'; +import 'package:google_fonts/google_fonts.dart'; + +import '../values/constants.dart'; +import 'little_post_recap_component.dart'; +import 'package:intl/intl.dart'; + +class RecapComponent extends StatelessWidget { + const RecapComponent({super.key}); + + @override + Widget build(BuildContext context) { + List weekDays = ['L', 'M', 'M', 'J', 'V', 'S', 'D']; + DateTime currentDate = DateTime.now(); + + return Container( + decoration: BoxDecoration( + color: profileBttnColor, + borderRadius: BorderRadius.circular(10), + border: Border.all(color: grayColor, width: 1)), + height: 120, + clipBehavior: Clip.hardEdge, + child: Column( + children: [ + Expanded( + child: Container( + padding: EdgeInsets.symmetric(horizontal: 10), + decoration: BoxDecoration( + color: postbutton, + borderRadius: BorderRadius.only(topRight: Radius.circular(10), topLeft: Radius.circular(10)), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Flexible( + child: Center( + child: Text( + weekDays[currentDate.subtract(Duration(days: 6)).weekday - 1].substring(0, 1), + style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17), + ), + )), + Flexible( + child: Center( + child: Text( + weekDays[currentDate.subtract(Duration(days: 5)).weekday - 1].substring(0, 1), + style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17), + ), + )), + Flexible( + child: Center( + child: Text( + weekDays[currentDate.subtract(Duration(days: 4)).weekday - 1].substring(0, 1), + style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17), + ), + )), + Flexible( + child: Center( + child: Text( + weekDays[currentDate.subtract(Duration(days: 3)).weekday - 1].substring(0, 1), + style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17), + ), + )), + Flexible( + child: Center( + child: Text( + weekDays[currentDate.subtract(Duration(days: 2)).weekday - 1].substring(0, 1), + style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17), + ), + )), + Flexible( + child: Center( + child: Text( + weekDays[currentDate.subtract(Duration(days: 1)).weekday - 1].substring(0, 1), + style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17), + ), + )), + Flexible( + child: Center( + child: Text( + weekDays[currentDate.subtract(Duration(days: 0)).weekday - 1].substring(0, 1), + style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17), + ), + )), + ], + ), + )), + Padding( + padding: EdgeInsets.all(12), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + LittleCapsule( + isEmpty: false, + date: DateTime.now(), + ), + LittleCapsule(isEmpty: true, date: currentDate.subtract(const Duration(days: 5))), + LittleCapsule(isEmpty: false, date: currentDate.subtract(const Duration(days: 4))), + LittleCapsule(isEmpty: false, date: currentDate.subtract(const Duration(days: 3))), + LittleCapsule(isEmpty: false, date: currentDate.subtract(const Duration(days: 2))), + LittleCapsule(isEmpty: false, date: currentDate.subtract(const Duration(days: 1))), + LittleCapsule(isEmpty: false, date: currentDate.subtract(const Duration(days: 0))), + ], + ), + ) + ], + ), + ); + } +} diff --git a/Sources/justMUSIC/lib/components/top_nav_bar_component.dart b/Sources/justMUSIC/lib/components/top_nav_bar_component.dart index 39deb0d..d258f68 100644 --- a/Sources/justMUSIC/lib/components/top_nav_bar_component.dart +++ b/Sources/justMUSIC/lib/components/top_nav_bar_component.dart @@ -27,8 +27,7 @@ class _TopNavBarComponentState extends State with TickerProv bool isDismissed = true; - final DateTime midnight = DateTime( - DateTime.now().year, DateTime.now().month, DateTime.now().day + 1); + final DateTime midnight = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day + 1); void actionSurBouton(bool choice) async { widget.callback(choice); @@ -47,8 +46,7 @@ class _TopNavBarComponentState extends State with TickerProv var now = tz.TZDateTime.now(franceTimeZone); // Calculate the midnight time for the next day in France timezone - var midnight = - tz.TZDateTime(franceTimeZone, now.year, now.month, now.day + 1); + var midnight = tz.TZDateTime(franceTimeZone, now.year, now.month, now.day + 1); bool res = await MyApp.postViewModel.getAvailable(); if (res) { @@ -67,8 +65,7 @@ class _TopNavBarComponentState extends State with TickerProv alignment: Alignment.centerLeft, child: Text( "Capsule disponible", - style: - GoogleFonts.plusJakartaSans(color: Colors.grey, fontSize: 15), + style: GoogleFonts.plusJakartaSans(color: Colors.grey, fontSize: 15), ), ), flushbarStyle: FlushbarStyle.FLOATING, @@ -105,8 +102,7 @@ class _TopNavBarComponentState extends State with TickerProv alignment: Alignment.centerLeft, child: CountdownTimer( endTime: midnight.millisecondsSinceEpoch, - textStyle: - GoogleFonts.plusJakartaSans(color: Colors.grey, fontSize: 15), + textStyle: GoogleFonts.plusJakartaSans(color: Colors.grey, fontSize: 15), ), ), flushbarStyle: FlushbarStyle.FLOATING, @@ -153,7 +149,7 @@ class _TopNavBarComponentState extends State with TickerProv flex: 1, child: GestureDetector( behavior: HitTestBehavior.translucent, - onTap: () async { + onTap: () { Navigator.of(context).push(routeAddFriend()); }, child: const Icon( @@ -199,30 +195,23 @@ class _TopNavBarComponentState extends State with TickerProv } }, child: LayoutBuilder( - builder: (BuildContext context, - BoxConstraints constraints) { + builder: (BuildContext context, BoxConstraints constraints) { if (choice) { return Padding( - padding: const EdgeInsets.only( - left: 8, top: 0, right: 8, bottom: 6), + padding: const EdgeInsets.only(left: 8, top: 0, right: 8, bottom: 6), child: AutoSizeText( "Mes amis", style: GoogleFonts.plusJakartaSans( - fontWeight: FontWeight.w500, - fontSize: 16, - color: Colors.white), + fontWeight: FontWeight.w500, fontSize: 16, color: Colors.white), ), ); } else { return Padding( - padding: const EdgeInsets.only( - left: 8, top: 0, right: 8, bottom: 6), + padding: const EdgeInsets.only(left: 8, top: 0, right: 8, bottom: 6), child: AutoSizeText( "Mes amis", style: GoogleFonts.plusJakartaSans( - fontWeight: FontWeight.w300, - fontSize: 16, - color: unactiveFeed), + fontWeight: FontWeight.w300, fontSize: 16, color: unactiveFeed), )); } }, @@ -239,29 +228,22 @@ class _TopNavBarComponentState extends State with TickerProv } }, child: LayoutBuilder( - builder: (BuildContext context, - BoxConstraints constraints) { + builder: (BuildContext context, BoxConstraints constraints) { if (choice) { return Padding( - padding: const EdgeInsets.only( - left: 8, top: 0, right: 8, bottom: 6), + padding: const EdgeInsets.only(left: 8, top: 0, right: 8, bottom: 6), child: AutoSizeText( "Discovery", style: GoogleFonts.plusJakartaSans( - fontWeight: FontWeight.w300, - fontSize: 16, - color: unactiveFeed), + fontWeight: FontWeight.w300, fontSize: 16, color: unactiveFeed), )); } else { return Padding( - padding: const EdgeInsets.only( - left: 8, top: 0, right: 8, bottom: 6), + padding: const EdgeInsets.only(left: 8, top: 0, right: 8, bottom: 6), child: AutoSizeText( "Discovery", style: GoogleFonts.plusJakartaSans( - fontWeight: FontWeight.w500, - fontSize: 16, - color: Colors.white), + fontWeight: FontWeight.w500, fontSize: 16, color: Colors.white), )); } }, diff --git a/Sources/justMUSIC/lib/config/routes.dart b/Sources/justMUSIC/lib/config/routes.dart index 5c6c7a6..1c4ed4b 100644 --- a/Sources/justMUSIC/lib/config/routes.dart +++ b/Sources/justMUSIC/lib/config/routes.dart @@ -2,6 +2,9 @@ import 'package:flutter/Material.dart'; import 'package:justmusic/screens/add_friend_screen.dart'; import 'package:justmusic/screens/feed_screen.dart'; import 'package:justmusic/screens/profile_screen.dart'; +import 'package:justmusic/screens/user_screen.dart'; + +import '../model/User.dart'; Route routeProfile() { return PageRouteBuilder( @@ -50,3 +53,21 @@ Route routeRocket() { }, ); } + +Route routeUser(User user) { + return PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => UserScreen(user: user), + transitionsBuilder: (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + const curve = Curves.ease; + + var tween = Tween(begin: begin, end: end).chain(CurveTween(curve: curve)); + + return SlideTransition( + position: animation.drive(tween), + child: child, + ); + }, + ); +} diff --git a/Sources/justMUSIC/lib/main.dart b/Sources/justMUSIC/lib/main.dart index 83fabcd..cfcdb8a 100644 --- a/Sources/justMUSIC/lib/main.dart +++ b/Sources/justMUSIC/lib/main.dart @@ -17,6 +17,7 @@ import 'package:justmusic/screens/launching_rocker_screen.dart'; import 'package:justmusic/screens/post_screen.dart'; import 'package:justmusic/screens/profile_screen.dart'; import 'package:justmusic/screens/registration_screen.dart'; +import 'package:justmusic/screens/user_screen.dart'; import 'package:justmusic/screens/welcome_screen.dart'; import 'package:justmusic/view_model/CommentViewModel.dart'; import 'package:justmusic/view_model/MusicViewModel.dart'; @@ -67,8 +68,7 @@ class _MyAppState extends State { print('User is currently signed out!'); return null; } else { - MyApp.userViewModel.userCurrent = - (await (MyApp.userViewModel.getUser(user.uid)))!; + MyApp.userViewModel.userCurrent = (await (MyApp.userViewModel.getUser(user.uid)))!; userCurrent = Stream.value(MyApp.userViewModel.userCurrent); print('User is signed in!'); } @@ -115,16 +115,14 @@ class _MyAppState extends State { return FutureBuilder( future: MyApp.userViewModel.getUser(snapshot.data!.uid), builder: (context, userSnapshot) { - if (userSnapshot.connectionState == - ConnectionState.waiting) { + if (userSnapshot.connectionState == ConnectionState.waiting) { return LoadingScreen(); } else if (userSnapshot.hasData) { MyApp.userViewModel.userCurrent = userSnapshot.data!; return AnimatedSwitcher( duration: Duration(milliseconds: 1000), transitionBuilder: (child, animation) { - return FadeTransition( - opacity: animation, child: child); + return FadeTransition(opacity: animation, child: child); }, child: FeedScreen(), ); diff --git a/Sources/justMUSIC/lib/screens/user_screen.dart b/Sources/justMUSIC/lib/screens/user_screen.dart new file mode 100644 index 0000000..20e5855 --- /dev/null +++ b/Sources/justMUSIC/lib/screens/user_screen.dart @@ -0,0 +1,155 @@ +import 'package:flutter/Material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:google_fonts/google_fonts.dart'; + +import '../components/profile_component.dart'; +import '../components/recap_component.dart'; +import '../main.dart'; +import '../model/User.dart'; +import '../values/constants.dart'; + +class UserScreen extends StatefulWidget { + final User user; + const UserScreen({super.key, required this.user}); + + @override + State createState() => _UserScreenState(); +} + +class _UserScreenState extends State { + late bool isClicked; + @override + Widget build(BuildContext context) { + isClicked = MyApp.userViewModel.isFriend(widget.user.id); + return Scaffold( + appBar: PreferredSize( + preferredSize: Size(double.infinity, 58), + child: Container( + height: double.infinity, + color: bgAppBar, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: defaultPadding), + child: Stack( + alignment: Alignment.centerLeft, + children: [ + GestureDetector( + behavior: HitTestBehavior.translucent, + onTap: () { + Navigator.pop(context, true); + }, + child: Container( + padding: EdgeInsets.symmetric(horizontal: 10), + height: 30, + width: 30, + child: Image( + image: AssetImage("assets/images/return_icon.png"), + height: 8, + ), + )), + Align( + child: Text( + widget.user.pseudo, + style: GoogleFonts.plusJakartaSans(color: Colors.white, fontSize: 14, fontWeight: FontWeight.bold), + ), + ) + ], + ), + ), + ), + ), + body: Container( + width: double.infinity, + height: double.infinity, + color: bgColor, + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(decelerationRate: ScrollDecelerationRate.fast), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: settingPadding), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(top: 68.h, bottom: 40), + child: ProfileComponent(user: widget.user), + ), + Align( + alignment: Alignment.topCenter, + child: isClicked + ? SizedBox( + // Définir une largeur minimale pour le bouton "Ajouter" + width: 120, // Réglez cette valeur en fonction de vos besoins + child: Material( + borderRadius: BorderRadius.all(Radius.circular(5)), + color: selectedButton, + child: InkWell( + splashColor: Colors.white.withOpacity(0.3), + onTap: () async { + await MyApp.userViewModel.addOrDeleteFriend(widget.user.id); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + "Vous ne suivez plus ${widget.user.pseudo}", + style: GoogleFonts.plusJakartaSans( + color: Colors.white, fontWeight: FontWeight.w400, fontSize: 20.h), + ), + backgroundColor: Colors.red, + closeIconColor: Colors.white, + ), + ); + setState(() {}); + }, + child: Container( + padding: EdgeInsets.fromLTRB(28, 7, 28, 7), + decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(7))), + child: Center( + child: Text("Ajouté", + style: GoogleFonts.plusJakartaSans( + color: Colors.white, fontWeight: FontWeight.w600, fontSize: 13)), + ), + ))), + ) + : SizedBox( + // Définir une largeur minimale pour le bouton "Ajouter" + width: 120, // Réglez cette valeur en fonction de vos besoins + child: Material( + borderRadius: BorderRadius.all(Radius.circular(5)), + color: primaryColor, + child: InkWell( + splashColor: Colors.white.withOpacity(0.3), + onTap: () async { + await MyApp.userViewModel.addOrDeleteFriend(widget.user.id); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + backgroundColor: primaryColor, + content: Text( + "Vous suivez à present ${widget.user.pseudo}", + style: GoogleFonts.plusJakartaSans( + color: Colors.white, fontWeight: FontWeight.w400, fontSize: 20.h), + ), + ), + ); + setState(() {}); + }, + child: Container( + padding: EdgeInsets.fromLTRB(25, 7, 25, 7), + decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(7))), + child: Center( + child: Text("Ajouter", + style: GoogleFonts.plusJakartaSans( + color: Colors.white, fontWeight: FontWeight.w600, fontSize: 13)), + ), + )))), + ), + SizedBox( + height: 40, + ), + RecapComponent() + ], + ), + ), + ), + ), + ); + } +} From eb551aefa9a6affc6013de01f648abe9fe85e7cf Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Thu, 3 Aug 2023 21:38:38 +0200 Subject: [PATCH 2/6] recap component --- .../lib/components/recap_component.dart | 58 +++++--- .../components/setting_part_component.dart | 10 +- .../justMUSIC/lib/screens/profile_screen.dart | 29 +++- .../justMUSIC/lib/screens/user_screen.dart | 140 +++++++++--------- .../justMUSIC/lib/services/PostService.dart | 40 ++--- 5 files changed, 148 insertions(+), 129 deletions(-) diff --git a/Sources/justMUSIC/lib/components/recap_component.dart b/Sources/justMUSIC/lib/components/recap_component.dart index 925734f..d7ce67e 100644 --- a/Sources/justMUSIC/lib/components/recap_component.dart +++ b/Sources/justMUSIC/lib/components/recap_component.dart @@ -1,12 +1,18 @@ +import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/Material.dart'; import 'package:google_fonts/google_fonts.dart'; - +import '../main.dart'; +import '../model/User.dart' as justMusic; import '../values/constants.dart'; import 'little_post_recap_component.dart'; -import 'package:intl/intl.dart'; class RecapComponent extends StatelessWidget { - const RecapComponent({super.key}); + final justMusic.User user; + const RecapComponent({super.key, required this.user}); + + Future>? _fetchdata() async { + return await MyApp.postViewModel.recapSevenDays(user.id); + } @override Widget build(BuildContext context) { @@ -85,25 +91,33 @@ class RecapComponent extends StatelessWidget { ], ), )), - Padding( - padding: EdgeInsets.all(12), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - LittleCapsule( - isEmpty: false, - date: DateTime.now(), - ), - LittleCapsule(isEmpty: true, date: currentDate.subtract(const Duration(days: 5))), - LittleCapsule(isEmpty: false, date: currentDate.subtract(const Duration(days: 4))), - LittleCapsule(isEmpty: false, date: currentDate.subtract(const Duration(days: 3))), - LittleCapsule(isEmpty: false, date: currentDate.subtract(const Duration(days: 2))), - LittleCapsule(isEmpty: false, date: currentDate.subtract(const Duration(days: 1))), - LittleCapsule(isEmpty: false, date: currentDate.subtract(const Duration(days: 0))), - ], - ), - ) + FutureBuilder>( + future: _fetchdata(), // a previously-obtained Future or null + builder: (BuildContext context, AsyncSnapshot> snapshot) { + if (snapshot.hasData) { + return Padding( + padding: EdgeInsets.all(12), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + LittleCapsule( + isEmpty: snapshot.data![0], + date: currentDate.subtract(const Duration(days: 6)), + ), + LittleCapsule(isEmpty: snapshot.data![1], date: currentDate.subtract(const Duration(days: 5))), + LittleCapsule(isEmpty: snapshot.data![2], date: currentDate.subtract(const Duration(days: 4))), + LittleCapsule(isEmpty: snapshot.data![3], date: currentDate.subtract(const Duration(days: 3))), + LittleCapsule(isEmpty: snapshot.data![4], date: currentDate.subtract(const Duration(days: 2))), + LittleCapsule(isEmpty: snapshot.data![5], date: currentDate.subtract(const Duration(days: 1))), + LittleCapsule(isEmpty: snapshot.data![6], date: currentDate.subtract(const Duration(days: 0))), + ], + ), + ); + } else { + return Container(); + } + }), ], ), ); diff --git a/Sources/justMUSIC/lib/components/setting_part_component.dart b/Sources/justMUSIC/lib/components/setting_part_component.dart index 21e47f1..3079d48 100644 --- a/Sources/justMUSIC/lib/components/setting_part_component.dart +++ b/Sources/justMUSIC/lib/components/setting_part_component.dart @@ -9,7 +9,9 @@ class SettingPartComponent extends StatelessWidget { final JustMusicIcon icon; final String label; final bool important; - const SettingPartComponent({Key? key, required this.icon, required this.label, this.important = false}) + final VoidCallback? action; + const SettingPartComponent( + {Key? key, required this.icon, required this.label, this.important = false, required this.action}) : super(key: key); @override @@ -24,11 +26,7 @@ class SettingPartComponent extends StatelessWidget { color: important ? warningBttnColor : settingColor, borderOnForeground: false, child: InkWell( - onTap: () { - if (icon == JustMusicIcon.cross) { - logout(); - } - }, + onTap: action, splashColor: Colors.transparent, highlightColor: Colors.white.withOpacity(0.08), child: Container( diff --git a/Sources/justMUSIC/lib/screens/profile_screen.dart b/Sources/justMUSIC/lib/screens/profile_screen.dart index 5d13b0c..a40fd0a 100644 --- a/Sources/justMUSIC/lib/screens/profile_screen.dart +++ b/Sources/justMUSIC/lib/screens/profile_screen.dart @@ -1,3 +1,4 @@ +import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -5,6 +6,7 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:justmusic/values/icons.dart'; import '../components/profile_component.dart'; import '../components/setting_part_component.dart'; +import '../config/routes.dart'; import '../main.dart'; import '../values/constants.dart'; @@ -18,6 +20,16 @@ class ProfileScreen extends StatefulWidget { class _ProfileScreenState extends State { @override Widget build(BuildContext context) { + Future logout() async { + print("cc"); + await FirebaseAuth.instance.signOut(); + Navigator.pushNamed(context, '/welcome'); + } + + void _openDetail() { + Navigator.of(context).push(routeUser(MyApp.userViewModel.userCurrent)); + } + return Scaffold( appBar: PreferredSize( preferredSize: Size(double.infinity, 58), @@ -84,23 +96,28 @@ class _ProfileScreenState extends State { SettingPartComponent( icon: JustMusicIcon.profile, label: 'Compte', + action: _openDetail, ), - SettingPartComponent( + const SettingPartComponent( icon: JustMusicIcon.history, label: 'Historiques des capsules', + action: null, ), - SettingPartComponent( + const SettingPartComponent( icon: JustMusicIcon.spotify, label: 'Lier un compte Spotify', + action: null, ), - SettingPartComponent( + const SettingPartComponent( icon: JustMusicIcon.trash, label: 'Supprimer mon compte', + action: null, ), SettingPartComponent( icon: JustMusicIcon.cross, label: 'Déconnexion', important: true, + action: logout, ), ], ), @@ -114,15 +131,17 @@ class _ProfileScreenState extends State { ), ClipRRect( borderRadius: BorderRadius.circular(8), - child: Column( - children: const [ + child: const Column( + children: [ SettingPartComponent( icon: JustMusicIcon.theme, label: 'Thême de l\'application', + action: null, ), SettingPartComponent( icon: JustMusicIcon.notification, label: 'Notifications', + action: null, ), ], ), diff --git a/Sources/justMUSIC/lib/screens/user_screen.dart b/Sources/justMUSIC/lib/screens/user_screen.dart index 20e5855..c81851d 100644 --- a/Sources/justMUSIC/lib/screens/user_screen.dart +++ b/Sources/justMUSIC/lib/screens/user_screen.dart @@ -73,78 +73,80 @@ class _UserScreenState extends State { padding: EdgeInsets.only(top: 68.h, bottom: 40), child: ProfileComponent(user: widget.user), ), - Align( - alignment: Alignment.topCenter, - child: isClicked - ? SizedBox( - // Définir une largeur minimale pour le bouton "Ajouter" - width: 120, // Réglez cette valeur en fonction de vos besoins - child: Material( - borderRadius: BorderRadius.all(Radius.circular(5)), - color: selectedButton, - child: InkWell( - splashColor: Colors.white.withOpacity(0.3), - onTap: () async { - await MyApp.userViewModel.addOrDeleteFriend(widget.user.id); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text( - "Vous ne suivez plus ${widget.user.pseudo}", - style: GoogleFonts.plusJakartaSans( - color: Colors.white, fontWeight: FontWeight.w400, fontSize: 20.h), - ), - backgroundColor: Colors.red, - closeIconColor: Colors.white, - ), - ); - setState(() {}); - }, - child: Container( - padding: EdgeInsets.fromLTRB(28, 7, 28, 7), - decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(7))), - child: Center( - child: Text("Ajouté", - style: GoogleFonts.plusJakartaSans( - color: Colors.white, fontWeight: FontWeight.w600, fontSize: 13)), - ), - ))), - ) - : SizedBox( - // Définir une largeur minimale pour le bouton "Ajouter" - width: 120, // Réglez cette valeur en fonction de vos besoins - child: Material( - borderRadius: BorderRadius.all(Radius.circular(5)), - color: primaryColor, - child: InkWell( - splashColor: Colors.white.withOpacity(0.3), - onTap: () async { - await MyApp.userViewModel.addOrDeleteFriend(widget.user.id); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: primaryColor, - content: Text( - "Vous suivez à present ${widget.user.pseudo}", - style: GoogleFonts.plusJakartaSans( - color: Colors.white, fontWeight: FontWeight.w400, fontSize: 20.h), - ), - ), - ); - setState(() {}); - }, - child: Container( - padding: EdgeInsets.fromLTRB(25, 7, 25, 7), - decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(7))), - child: Center( - child: Text("Ajouter", - style: GoogleFonts.plusJakartaSans( - color: Colors.white, fontWeight: FontWeight.w600, fontSize: 13)), - ), - )))), - ), + MyApp.userViewModel.userCurrent.id != widget.user.id + ? Align( + alignment: Alignment.topCenter, + child: isClicked + ? SizedBox( + // Définir une largeur minimale pour le bouton "Ajouter" + width: 120, // Réglez cette valeur en fonction de vos besoins + child: Material( + borderRadius: BorderRadius.all(Radius.circular(5)), + color: selectedButton, + child: InkWell( + splashColor: Colors.white.withOpacity(0.3), + onTap: () async { + await MyApp.userViewModel.addOrDeleteFriend(widget.user.id); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + "Vous ne suivez plus ${widget.user.pseudo}", + style: GoogleFonts.plusJakartaSans( + color: Colors.white, fontWeight: FontWeight.w400, fontSize: 20.h), + ), + backgroundColor: Colors.red, + closeIconColor: Colors.white, + ), + ); + setState(() {}); + }, + child: Container( + padding: EdgeInsets.fromLTRB(28, 7, 28, 7), + decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(7))), + child: Center( + child: Text("Ajouté", + style: GoogleFonts.plusJakartaSans( + color: Colors.white, fontWeight: FontWeight.w600, fontSize: 13)), + ), + ))), + ) + : SizedBox( + // Définir une largeur minimale pour le bouton "Ajouter" + width: 120, // Réglez cette valeur en fonction de vos besoins + child: Material( + borderRadius: BorderRadius.all(Radius.circular(5)), + color: primaryColor, + child: InkWell( + splashColor: Colors.white.withOpacity(0.3), + onTap: () async { + await MyApp.userViewModel.addOrDeleteFriend(widget.user.id); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + backgroundColor: primaryColor, + content: Text( + "Vous suivez à present ${widget.user.pseudo}", + style: GoogleFonts.plusJakartaSans( + color: Colors.white, fontWeight: FontWeight.w400, fontSize: 20.h), + ), + ), + ); + setState(() {}); + }, + child: Container( + padding: EdgeInsets.fromLTRB(25, 7, 25, 7), + decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(7))), + child: Center( + child: Text("Ajouter", + style: GoogleFonts.plusJakartaSans( + color: Colors.white, fontWeight: FontWeight.w600, fontSize: 13)), + ), + )))), + ) + : Container(), SizedBox( height: 40, ), - RecapComponent() + RecapComponent(user: widget.user) ], ), ), diff --git a/Sources/justMUSIC/lib/services/PostService.dart b/Sources/justMUSIC/lib/services/PostService.dart index 18719ab..17e2645 100644 --- a/Sources/justMUSIC/lib/services/PostService.dart +++ b/Sources/justMUSIC/lib/services/PostService.dart @@ -7,8 +7,7 @@ import 'package:firebase_storage/firebase_storage.dart'; import '../main.dart'; class PostService { - createPost(String? description, String idMusic, File? image, - Tuple2? location) async { + createPost(String? description, String idMusic, File? image, Tuple2? location) async { var id = MyApp.userViewModel.userCurrent.id; final post = { "user_id": id, @@ -42,14 +41,11 @@ class PostService { deletePost() {} - Future>>> getPopularPosts( - {int limit = 10, int offset = 0}) async { + Future>>> getPopularPosts({int limit = 10, int offset = 0}) async { DateTime twentyFourHoursAgo = DateTime.now().subtract(Duration(hours: 24)); - Timestamp twentyFourHoursAgoTimestamp = - Timestamp.fromDate(twentyFourHoursAgo); + Timestamp twentyFourHoursAgoTimestamp = Timestamp.fromDate(twentyFourHoursAgo); - QuerySnapshot> response = await FirebaseFirestore - .instance + QuerySnapshot> response = await FirebaseFirestore.instance .collection("posts") .where("date", isGreaterThan: twentyFourHoursAgoTimestamp) .limit(limit) @@ -67,8 +63,7 @@ class PostService { return Timestamp.fromDate(twentyFourHoursAgo); } - Future>>> getPostsFriends( - {int limit = 10, int offset = 0}) async { + Future>>> getPostsFriends({int limit = 10, int offset = 0}) async { var timestamp = _getTwentyFourHoursAgoTimestamp(); var response = await FirebaseFirestore.instance .collection("posts") @@ -84,17 +79,12 @@ class PostService { Future getAvailable(String idUser) async { DateTime today = DateTime.now(); - QuerySnapshot> response = await FirebaseFirestore - .instance - .collection("posts") - .where("user_id", isEqualTo: idUser) - .get(); + QuerySnapshot> response = + await FirebaseFirestore.instance.collection("posts").where("user_id", isEqualTo: idUser).get(); bool isTodayAvailable = response.docs.any((doc) { DateTime date = doc["date"].toDate(); // Assuming the field name is "date" - return date.day == today.day && - date.month == today.month && - date.year == today.year; + return date.day == today.day && date.month == today.month && date.year == today.year; }); return !isTodayAvailable; @@ -103,17 +93,13 @@ class PostService { Future> recapSevenDays(String id) async { List recapList = []; - DateTime sevenDaysAgo = DateTime.now().subtract(Duration(days: 7)); + DateTime sevenDaysAgo = DateTime.now().subtract(Duration(days: 6)); - QuerySnapshot> response = await FirebaseFirestore - .instance - .collection("posts") - .where("user_id", isEqualTo: id) - .get(); + QuerySnapshot> response = + await FirebaseFirestore.instance.collection("posts").where("user_id", isEqualTo: id).get(); - List?> postList = response.docs - .map((DocumentSnapshot> doc) => doc.data()) - .toList(); + List?> postList = + response.docs.map((DocumentSnapshot> doc) => doc.data()).toList(); for (int i = 0; i < 7; i++) { DateTime date = sevenDaysAgo.add(Duration(days: i)); From adf389741742f706157a0c2961d9044dbc536678 Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Thu, 3 Aug 2023 21:48:05 +0200 Subject: [PATCH 3/6] add icon --- .idea/libraries/Dart_Packages.xml | 24 ++++++++++++++++++ .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 4976 bytes .../mipmap-hdpi/ic_launcher_adaptive_back.png | Bin 0 -> 4765 bytes .../mipmap-hdpi/ic_launcher_adaptive_fore.png | Bin 0 -> 9877 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 2950 bytes .../mipmap-mdpi/ic_launcher_adaptive_back.png | Bin 0 -> 2565 bytes .../mipmap-mdpi/ic_launcher_adaptive_fore.png | Bin 0 -> 5817 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 7365 bytes .../ic_launcher_adaptive_back.png | Bin 0 -> 7312 bytes .../ic_launcher_adaptive_fore.png | Bin 0 -> 16502 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 12231 bytes .../ic_launcher_adaptive_back.png | Bin 0 -> 13567 bytes .../ic_launcher_adaptive_fore.png | Bin 0 -> 31112 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 18668 bytes .../ic_launcher_adaptive_back.png | Bin 0 -> 20309 bytes .../ic_launcher_adaptive_fore.png | Bin 0 -> 53110 bytes 16 files changed, 24 insertions(+) create mode 100644 Sources/justMUSIC/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png create mode 100644 Sources/justMUSIC/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png create mode 100644 Sources/justMUSIC/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png create mode 100644 Sources/justMUSIC/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png create mode 100644 Sources/justMUSIC/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png create mode 100644 Sources/justMUSIC/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png create mode 100644 Sources/justMUSIC/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png create mode 100644 Sources/justMUSIC/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png create mode 100644 Sources/justMUSIC/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png create mode 100644 Sources/justMUSIC/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png diff --git a/.idea/libraries/Dart_Packages.xml b/.idea/libraries/Dart_Packages.xml index 2795ffb..7f7c6f9 100644 --- a/.idea/libraries/Dart_Packages.xml +++ b/.idea/libraries/Dart_Packages.xml @@ -296,6 +296,27 @@ + + + + + + + + + + + + + + + + + + @@ -950,6 +971,9 @@ + + + diff --git a/Sources/justMUSIC/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Sources/justMUSIC/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..56c3c48e30d29e6d0c2d1ebcbb3c3e64733cb63c 100644 GIT binary patch literal 4976 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 AQ2+n{ diff --git a/Sources/justMUSIC/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png b/Sources/justMUSIC/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png new file mode 100644 index 0000000000000000000000000000000000000000..48f7c41294f26c004e011821e24d4bfd42b33f8a GIT binary patch literal 4765 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 literal 0 HcmV?d00001 diff --git a/Sources/justMUSIC/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png b/Sources/justMUSIC/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9a24f032130804abaaf482b0fa78f0e52ca778 GIT binary patch literal 9877 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 Gh5ZlOj1K|; literal 0 HcmV?d00001 diff --git a/Sources/justMUSIC/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Sources/justMUSIC/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..6aaf26d97eaa850fa8de0ab6bdbe2b91a1f59155 100644 GIT binary patch literal 2950 zcmV;13wiX3P)Px=KuJVFRA@uhT6;`X*%|*X1A{OFJ`f+E3@-%X4gIrrS}_kF+b_kHJFCHg-ao%%eQjruGt%^88LFd=~)R;E?q6^!`Sp z@kd^-cLEV*_4M>iR9fwx&dDy9i)2|QZYcg$9snTz&aai@5S4!Y`r*6<$5cL0FaVg> z^YZf6ba!`u0mDU#s2Ql{d988ceNZeSA_7tQw6wHzmoFN~5zQkI02r^&%gg(#%jH_z z(a{kwq~CUc2*hA8AR1pK_db8R5 zNk>P==it1SnrJ2E_hCGr10W(JBR5zqmYqHj?Ua$8DHk<9fPo3TcP6+_iiO9~*zUXi`K2$RdPX_Y5I7Vv@C3OPjR&;c9 zvDIq*h=^QbQi}lacUW$2?sBKoxeHZQJOX(>P~i$RSD+kSspH5Q9yzfkO01I7<{ z-~fCNlGsUdV#;HD?aNFs4{ny?=%{XjTIFYIYiV>L>^|NZxHi-PEO9x+uGU= zpr7Fesl6}|E&Lf0jB07gHF~JX$jBvDtMwR<0tW!^M`mSZeeG~Krg85p!>&eyU_Gyl zXh=v1jG?ZsE_SN5B5Ev%ii)~!wOZ#85vr=p0qEl6N91cejA1HcO&CAMrYE&CEXb=q_KAaghZrnJUHER}KxpIZd%F1Z{`t>wz+B9ly zZKVwxHqhO>cNx$?>V)5oM&t7G^71373mgFG^M%9VC=lr*Di8h+CIaFZcswN~g_@e0 zn8#<#m_gUCUni^8N(BW448WT=Z)nSwEp+eRy?5QMnqY|Y8VrU#<>lp{LQ?tSBx=l< zG3PrvIwooHUg_~*lblDUfB*iBLa$!EVqTv(aU$jA<tXrKhJe&*K_O6dxbY#v*sn{bKCn$B)@kRTLIDqrSd=C=vaa1BgjT zNN5oUMMp=|wr$(kqz4WhpmXQWu}NV3%9Se_fK#VVu@}#qH;)b;JV-Zh-lV~U2h)ND z3)pi};y6tYl!|jm3)>)AHrZ8ISQhTJ5Dvm(q?MJLtlN z3p8}-P+GluH6Gtj0?D=);)-llM&!1;=;$2s-UZsYH z28xM^VSu1ohYufS3=r)L3c$X7`zSRvm0DU_n3CMTf1l>hpU-FoeJ?61Vxi^$E?&II z0IXWIiUBxsDrc$-FwY_LmTU+~H1O}N*rWc|LAOd^$?uF*Ekgr*@hT7WN7zHdA3!?=9AOcI4 zEa?>iP_3}Akf1(u=gwsmf!A#|8=XCSmO#->n>H~34u^vlEm}m|w{NG*moKw9mGwxO z10n#Z(7?pR#Iv$2Pv8SN0F-xcpp6XS}Di|N|6YpgOOT1for>S{I?;$XMi85PAG2n!1RX4h9l%07_LDH^fpi@C=(JA^Z;$(shXM^=0#8;Ha3>VjvdSB0Pu~Cjr8#0Lq;RKvZ&a@-I9dPoda%sP#Nr?Y34QrFLJr1{Nc%Y*qOC09uly zkE^Sz(TTQ+>j3}>C!*Nom*sgskwZUyK&H-_g=RR0NCyX+UumGBy6hwj)Mp$4>(2q zMTO53h&Fr3UGGaCs3ktHGg@-VtG?IkJ!!Mq@QvWLZyV(u zb+jlX3I{+Kh$tpCHT4g&EH4y4DfK0J)jS)>cv+SY+3oh<`;33L6W2@Gls6RDJQ6X< z$;kzhB>fgtP)e+lV*a#U$$cd_aNgtbd{$Fav&UyVRxRTp_us9pt)DkFHDMdQ)wdJfi#DQ@g8_i??28Td zl+ZJoOs4sIy}rQf^^WAtUoc6k^uDh(K!5X%+wI;{Utj-~&v3K}e!qu*q`;Prr?Sk>x4fRtcA zv#<2N-U&)&jEIPc88T!DieIiINu!7;U-Y){_kUzru6MiLWi2f&B`%i>RTYH^8@1?d z_}BVi>`*OaK|kmN!oDH<=!Iqw(ZLD2AzI=AuYwlvFiseZYkZl9w)_1atYuiRIp7Z% wUlaihjK;q>m2-mi*pfB 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 b2W|fcbJSl$e;IgT00000NkvXXu0mjf;5ORq literal 0 HcmV?d00001 diff --git a/Sources/justMUSIC/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png b/Sources/justMUSIC/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png new file mode 100644 index 0000000000000000000000000000000000000000..157a3e4e88769e4dbc74564d9997ca6352398c1e GIT binary patch literal 5817 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 literal 0 HcmV?d00001 diff --git a/Sources/justMUSIC/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Sources/justMUSIC/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 09d4391482be68e9e4a07fab769b5de337d16eb1..dcc4075bd2c627c6739187ba8ccf9fc2c5c7e9cd 100644 GIT binary patch literal 7365 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 diff --git a/Sources/justMUSIC/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png b/Sources/justMUSIC/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png new file mode 100644 index 0000000000000000000000000000000000000000..df0183300ac27d2cf0b41ee33bf09dcb6a6eb1ea GIT binary patch literal 7312 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

J}RAjlGUVGuDG$ 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 H5*qS9OV@G9 literal 0 HcmV?d00001 diff --git a/Sources/justMUSIC/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Sources/justMUSIC/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..594f7f82c727f7db74d88211dc9d3e5417a37722 100644 GIT binary patch literal 12231 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 diff --git a/Sources/justMUSIC/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png b/Sources/justMUSIC/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png new file mode 100644 index 0000000000000000000000000000000000000000..042992b55d1c3983cb1bf1e35c0a76b0257458e0 GIT binary patch literal 13567 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 literal 0 HcmV?d00001 diff --git a/Sources/justMUSIC/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png b/Sources/justMUSIC/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png new file mode 100644 index 0000000000000000000000000000000000000000..fe01fd5a4340ed5a4cae4857118bd8f4494c6e26 GIT binary patch literal 31112 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 TBKNFB00000NkvXXu0mjfd9vOs literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` diff --git a/Sources/justMUSIC/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png b/Sources/justMUSIC/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png new file mode 100644 index 0000000000000000000000000000000000000000..0ae7d7d03ec710c5e86c63297714139e756b9497 GIT binary patch literal 20309 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 literal 0 HcmV?d00001 diff --git a/Sources/justMUSIC/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png b/Sources/justMUSIC/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png new file mode 100644 index 0000000000000000000000000000000000000000..3dff0d449fcb26bb15f1bde4cfe1d414a28af94d GIT binary patch literal 53110 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 literal 0 HcmV?d00001 From cff55c26ee900fa68f3e44fc18c725115b2b1f61 Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Thu, 3 Aug 2023 23:11:52 +0200 Subject: [PATCH 4/6] add icon --- .../android/app/src/main/AndroidManifest.xml | 2 +- .../lib/components/button_play_component.dart | 2 +- .../lib/components/post_component.dart | 501 ++++++------------ .../components/profile_list_component.dart | 9 +- .../lib/screens/detail_post_screen.dart | 33 +- .../justMUSIC/lib/screens/feed_screen.dart | 3 +- .../lib/view_model/CommentViewModel.dart | 7 +- 7 files changed, 180 insertions(+), 377 deletions(-) diff --git a/Sources/justMUSIC/android/app/src/main/AndroidManifest.xml b/Sources/justMUSIC/android/app/src/main/AndroidManifest.xml index 5fefc0b..5f9a1bc 100644 --- a/Sources/justMUSIC/android/app/src/main/AndroidManifest.xml +++ b/Sources/justMUSIC/android/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ diff --git a/Sources/justMUSIC/lib/components/button_play_component.dart b/Sources/justMUSIC/lib/components/button_play_component.dart index 2b252de..09393d3 100644 --- a/Sources/justMUSIC/lib/components/button_play_component.dart +++ b/Sources/justMUSIC/lib/components/button_play_component.dart @@ -44,7 +44,7 @@ class _ButtonPlayComponentState extends State { child: Icon( isPlaying ? Icons.pause_circle : Icons.play_circle, color: Colors.white, - size: 53, + size: 45, ), )); } diff --git a/Sources/justMUSIC/lib/components/post_component.dart b/Sources/justMUSIC/lib/components/post_component.dart index 7d17d20..2d0535c 100644 --- a/Sources/justMUSIC/lib/components/post_component.dart +++ b/Sources/justMUSIC/lib/components/post_component.dart @@ -40,162 +40,157 @@ class _PostComponentState extends State with TickerProviderStateM @override Widget build(BuildContext context) { return GestureDetector( - onTap: switchChoice, - child: LayoutBuilder( - builder: (BuildContext context, BoxConstraints constraints) { - if (widget.callback == null) { - return SizedBox( - width: double.infinity, - child: Column( + onTap: switchChoice, + child: SizedBox( + width: double.infinity, + child: Column( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.end, children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - ProfilPictureComponent(user: widget.post.user), - Expanded( - flex: 8, - child: Padding( - padding: const EdgeInsets.only(left: 10), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - widget.post.user.pseudo, - style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w600), - ), - widget.post.location.item2 != null - ? Text( - "${widget.post.location.item1}, ${widget.post.location.item2}", - style: GoogleFonts.plusJakartaSans( - color: Colors.white.withOpacity(0.4), - fontWeight: FontWeight.w300, - fontSize: 13), - ) - : Text( - "", - style: GoogleFonts.plusJakartaSans( - color: Colors.white.withOpacity(0.4), - fontWeight: FontWeight.w300, - fontSize: 13), - ) - ], + ProfilPictureComponent(user: widget.post.user), + Expanded( + flex: 8, + child: Padding( + padding: const EdgeInsets.only(left: 10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + widget.post.user.pseudo, + style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w600), ), + widget.post.location.item2 != null + ? Text( + "${widget.post.location.item1}, ${widget.post.location.item2}", + style: GoogleFonts.plusJakartaSans( + color: Colors.white.withOpacity(0.4), + fontWeight: FontWeight.w300, + fontSize: 13), + ) + : Text( + "", + style: GoogleFonts.plusJakartaSans( + color: Colors.white.withOpacity(0.4), + fontWeight: FontWeight.w300, + fontSize: 13), + ) + ], + ), + ), + ), + DateTime(today.year, today.month, today.day).isAtSameMomentAs( + DateTime(widget.post.date.year, widget.post.date.month, widget.post.date.day)) + ? Text( + "Aujourd'hui, ${widget.post.date.hour}:${widget.post.date.minute}", + style: GoogleFonts.plusJakartaSans( + color: Colors.white.withOpacity(0.4), fontWeight: FontWeight.w300, fontSize: 13), + ) + : Text( + "hier, ${widget.post.date.hour}:${widget.post.date.minute}", + style: GoogleFonts.plusJakartaSans( + color: Colors.white.withOpacity(0.4), fontWeight: FontWeight.w300, fontSize: 13), ), + ], + ), + SizedBox(height: 10), + ZoomTapAnimation( + onTap: () { + widget.callback!(widget.post); + }, + enableLongTapRepeatEvent: false, + longTapRepeatDuration: const Duration(milliseconds: 100), + begin: 1.0, + end: 0.99, + beginDuration: const Duration(milliseconds: 70), + endDuration: const Duration(milliseconds: 100), + beginCurve: Curves.decelerate, + endCurve: Curves.easeInOutSine, + child: AspectRatio( + aspectRatio: 1 / 1, + child: Container( + decoration: BoxDecoration( + // add border + border: const GradientBoxBorder( + gradient: LinearGradient(colors: [ + Colors.transparent, + Color(0xFF323232), + ], begin: Alignment.topCenter, end: Alignment.bottomCenter), + width: 2.5, + ), + // set border radius + borderRadius: BorderRadius.circular(20), ), - DateTime(today.year, today.month, today.day).isAtSameMomentAs( - DateTime(widget.post.date.year, widget.post.date.month, widget.post.date.day)) - ? Text( - "Aujourd'hui, ${widget.post.date.hour}:${widget.post.date.minute}", - style: GoogleFonts.plusJakartaSans( - color: Colors.white.withOpacity(0.4), fontWeight: FontWeight.w300, fontSize: 13), - ) - : Text( - "${widget.post.date.day}/${widget.post.date.month}/${widget.post.date.year}-${widget.post.date.hour}:${widget.post.date.minute}", - style: GoogleFonts.plusJakartaSans( - color: Colors.white.withOpacity(0.4), fontWeight: FontWeight.w300, fontSize: 13), + child: ClipRRect( + borderRadius: BorderRadius.circular(18), + // implement image + child: Stack( + alignment: Alignment.bottomCenter, + children: [ + Image( + image: NetworkImage(widget.post.music.cover!), + fit: BoxFit.cover, + width: double.infinity, ), - ], - ), - SizedBox(height: 10), - ZoomTapAnimation( - onTap: () { - if (widget.post.selfie != null) { - switchChoice(); - } - }, - enableLongTapRepeatEvent: false, - longTapRepeatDuration: const Duration(milliseconds: 100), - begin: 1.0, - end: 0.99, - beginDuration: const Duration(milliseconds: 70), - endDuration: const Duration(milliseconds: 100), - beginCurve: Curves.decelerate, - endCurve: Curves.easeInOutSine, - child: AspectRatio( - aspectRatio: 1 / 1, - child: Container( - decoration: BoxDecoration( - // add border - border: const GradientBoxBorder( - gradient: LinearGradient(colors: [ - Colors.transparent, - Color(0xFF323232), - ], begin: Alignment.topCenter, end: Alignment.bottomCenter), - width: 2.5, + Image( + image: AssetImage("assets/images/shadow_post.png"), + opacity: AnimationController(vsync: this, value: 0.7), + fit: BoxFit.fitHeight, + width: double.infinity, ), - // set border radius - borderRadius: BorderRadius.circular(20), - ), - child: ClipRRect( - borderRadius: BorderRadius.circular(18), - // implement image - child: Stack( - alignment: Alignment.bottomCenter, - children: [ - Image( - image: NetworkImage(choice ? widget.post.selfie! : widget.post.music.cover!), - fit: BoxFit.cover, - width: double.infinity, - ), - widget.post.selfie != null - ? Positioned( - top: 0, - right: 0, - child: Padding( - padding: EdgeInsets.all(12), - child: Container( - constraints: BoxConstraints(maxWidth: 140, maxHeight: 140), - width: 90.sp, - height: 90.sp, - decoration: BoxDecoration( - color: Colors.white, - // add border - border: Border.all(width: 3, color: Colors.white), - // set border radius - borderRadius: BorderRadius.circular(15), - ), - child: ClipRRect( - borderRadius: BorderRadius.circular(13), - // implement image - child: Image( - image: NetworkImage( - choice ? widget.post.music.cover! : widget.post.selfie!), - fit: BoxFit.cover, - ), - ), + widget.post.description == null + ? Container() + : Padding( + padding: EdgeInsets.all(15), + child: AutoSizeText( + '“${widget.post.description}”', + style: GoogleFonts.plusJakartaSans( + color: Colors.white, fontWeight: FontWeight.w400, fontSize: 15.sp), + maxFontSize: 20, + maxLines: 1, + ), + ), + widget.post.selfie != null + ? Positioned( + top: 0, + right: 0, + child: Padding( + padding: EdgeInsets.all(12), + child: Container( + constraints: BoxConstraints(maxWidth: 140, maxHeight: 140), + width: 90.sp, + height: 90.sp, + decoration: BoxDecoration( + color: Colors.white, + // add border + border: Border.all(width: 3, color: Colors.white), + // set border radius + borderRadius: BorderRadius.circular(15), + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(13), + // implement image + child: Image( + image: NetworkImage(widget.post.selfie!), + fit: BoxFit.cover, ), - )) - : Container(), - ], - ), - ), + ), + ), + )) + : Container(), + ], ), - )), - SizedBox(height: 15), + ), + ), + )), + SizedBox(height: 15), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ Row( - crossAxisAlignment: CrossAxisAlignment.end, - mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, children: [ - Flexible( - flex: 8, - child: TextScroll( - widget.post.music.artists.first.name!, - style: GoogleFonts.plusJakartaSans( - height: 1, color: Colors.white, fontWeight: FontWeight.w600, fontSize: 26.h), - mode: TextScrollMode.endless, - pauseBetween: Duration(milliseconds: 500), - velocity: Velocity(pixelsPerSecond: Offset(20, 0)), - )), - Padding( - padding: EdgeInsets.only(bottom: 10.h, right: 5.w, left: 5.w), - child: ClipOval( - child: Container( - width: 5.h, - height: 5.h, - color: Colors.white, - ), - ), - ), Expanded( flex: 8, child: Padding( @@ -203,7 +198,7 @@ class _PostComponentState extends State with TickerProviderStateM child: TextScroll( widget.post.music.title!, style: GoogleFonts.plusJakartaSans( - height: 1, color: Colors.white, fontWeight: FontWeight.w300, fontSize: 16.h), + height: 1, color: Colors.white, fontWeight: FontWeight.w600, fontSize: 26.h), mode: TextScrollMode.endless, velocity: Velocity(pixelsPerSecond: Offset(50, 20)), pauseBetween: Duration(milliseconds: 500), @@ -213,211 +208,23 @@ class _PostComponentState extends State with TickerProviderStateM AutoSizeText( widget.post.music.date.toString(), style: GoogleFonts.plusJakartaSans( - color: Colors.white.withOpacity(0.5), fontWeight: FontWeight.w300, fontSize: 16.h), + color: Colors.white, fontWeight: FontWeight.w600, fontSize: 26.h), textAlign: TextAlign.end, maxFontSize: 20, ), ], ), - ], - )); - } - - return SizedBox( - width: double.infinity, - child: Column( - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - ProfilPictureComponent(user: widget.post.user), - Expanded( - flex: 8, - child: Padding( - padding: const EdgeInsets.only(left: 10), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - widget.post.user.pseudo, - style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w600), - ), - widget.post.location.item2 != null - ? Text( - "${widget.post.location.item1}, ${widget.post.location.item2}", - style: GoogleFonts.plusJakartaSans( - color: Colors.white.withOpacity(0.4), - fontWeight: FontWeight.w300, - fontSize: 13), - ) - : Text( - "", - style: GoogleFonts.plusJakartaSans( - color: Colors.white.withOpacity(0.4), - fontWeight: FontWeight.w300, - fontSize: 13), - ) - ], - ), - ), - ), - DateTime(today.year, today.month, today.day).isAtSameMomentAs( - DateTime(widget.post.date.year, widget.post.date.month, widget.post.date.day)) - ? Text( - "Aujourd'hui, ${widget.post.date.hour}:${widget.post.date.minute}", - style: GoogleFonts.plusJakartaSans( - color: Colors.white.withOpacity(0.4), fontWeight: FontWeight.w300, fontSize: 13), - ) - : Text( - "hier, ${widget.post.date.hour}:${widget.post.date.minute}", - style: GoogleFonts.plusJakartaSans( - color: Colors.white.withOpacity(0.4), fontWeight: FontWeight.w300, fontSize: 13), - ), - ], - ), - SizedBox(height: 10), - ZoomTapAnimation( - onTap: () { - widget.callback!(widget.post); - }, - enableLongTapRepeatEvent: false, - longTapRepeatDuration: const Duration(milliseconds: 100), - begin: 1.0, - end: 0.99, - beginDuration: const Duration(milliseconds: 70), - endDuration: const Duration(milliseconds: 100), - beginCurve: Curves.decelerate, - endCurve: Curves.easeInOutSine, - child: AspectRatio( - aspectRatio: 1 / 1, - child: Container( - decoration: BoxDecoration( - // add border - border: const GradientBoxBorder( - gradient: LinearGradient(colors: [ - Colors.transparent, - Color(0xFF323232), - ], begin: Alignment.topCenter, end: Alignment.bottomCenter), - width: 2.5, - ), - // set border radius - borderRadius: BorderRadius.circular(20), - ), - child: ClipRRect( - borderRadius: BorderRadius.circular(18), - // implement image - child: Stack( - alignment: Alignment.bottomCenter, - children: [ - Image( - image: NetworkImage(widget.post.music.cover!), - fit: BoxFit.cover, - width: double.infinity, - ), - Image( - image: AssetImage("assets/images/shadow_post.png"), - opacity: AnimationController(vsync: this, value: 0.7), - fit: BoxFit.fitHeight, - width: double.infinity, - ), - widget.post.description == null - ? Container() - : Padding( - padding: EdgeInsets.all(15), - child: AutoSizeText( - '“${widget.post.description}”', - style: GoogleFonts.plusJakartaSans( - color: Colors.white, fontWeight: FontWeight.w400, fontSize: 15.sp), - maxFontSize: 20, - maxLines: 1, - ), - ), - widget.post.selfie != null - ? Positioned( - top: 0, - right: 0, - child: Padding( - padding: EdgeInsets.all(12), - child: Container( - constraints: BoxConstraints(maxWidth: 140, maxHeight: 140), - width: 90.sp, - height: 90.sp, - decoration: BoxDecoration( - color: Colors.white, - // add border - border: Border.all(width: 3, color: Colors.white), - // set border radius - borderRadius: BorderRadius.circular(15), - ), - child: ClipRRect( - borderRadius: BorderRadius.circular(13), - // implement image - child: Image( - image: NetworkImage(widget.post.selfie!), - fit: BoxFit.cover, - ), - ), - ), - )) - : Container(), - ], - ), - ), - ), - )), - SizedBox(height: 15), - SizedBox( - height: 40, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Expanded( - flex: 8, - child: Padding( - padding: EdgeInsets.only(bottom: 2), - child: TextScroll( - widget.post.music.title!, - style: GoogleFonts.plusJakartaSans( - height: 1, color: Colors.white, fontWeight: FontWeight.w600, fontSize: 26.h), - mode: TextScrollMode.endless, - velocity: Velocity(pixelsPerSecond: Offset(50, 20)), - pauseBetween: Duration(milliseconds: 500), - ), - )), - Container(width: 10), - AutoSizeText( - widget.post.music.date.toString(), - style: GoogleFonts.plusJakartaSans( - color: Colors.white, fontWeight: FontWeight.w600, fontSize: 26.h), - textAlign: TextAlign.end, - maxFontSize: 20, - ), - ], - ), - Expanded( - flex: 8, - child: TextScroll( - widget.post.music.artists.first.name!, - style: GoogleFonts.plusJakartaSans( - height: 1, - color: Colors.white.withOpacity(0.5), - fontWeight: FontWeight.w300, - fontSize: 16.h), - mode: TextScrollMode.endless, - pauseBetween: Duration(milliseconds: 500), - velocity: Velocity(pixelsPerSecond: Offset(20, 0)), - )), - ], + TextScroll( + widget.post.music.artists.first.name!, + style: GoogleFonts.plusJakartaSans( + height: 1, color: Colors.white.withOpacity(0.5), fontWeight: FontWeight.w300, fontSize: 16.h), + mode: TextScrollMode.endless, + pauseBetween: Duration(milliseconds: 500), + velocity: Velocity(pixelsPerSecond: Offset(20, 0)), ), - ) - ], - )); - }, - ), - ); + ], + ), + ], + ))); } } diff --git a/Sources/justMUSIC/lib/components/profile_list_component.dart b/Sources/justMUSIC/lib/components/profile_list_component.dart index ebb5363..9201a0c 100644 --- a/Sources/justMUSIC/lib/components/profile_list_component.dart +++ b/Sources/justMUSIC/lib/components/profile_list_component.dart @@ -1,6 +1,7 @@ import 'package:flutter/Material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:google_fonts/google_fonts.dart'; +import 'package:justmusic/components/profil_picture_component.dart'; import '../main.dart'; import '../model/User.dart'; import '../values/constants.dart'; @@ -23,13 +24,7 @@ class _ProfileListComponentState extends State { padding: const EdgeInsets.only(bottom: 5), child: Row( children: [ - ClipOval( - child: FadeInImage.assetNetwork( - height: 50, - width: 50, - fit: BoxFit.cover, - placeholder: "assets/images/loadingPlaceholder.gif", - image: widget.user.pp)), + ProfilPictureComponent(user: widget.user), const SizedBox( width: 10, ), diff --git a/Sources/justMUSIC/lib/screens/detail_post_screen.dart b/Sources/justMUSIC/lib/screens/detail_post_screen.dart index 0f1b875..33027e9 100644 --- a/Sources/justMUSIC/lib/screens/detail_post_screen.dart +++ b/Sources/justMUSIC/lib/screens/detail_post_screen.dart @@ -9,6 +9,7 @@ import 'package:text_scroll/text_scroll.dart'; import 'package:zoom_tap_animation/zoom_tap_animation.dart'; import '../components/button_play_component.dart'; import '../components/comment_component.dart'; +import '../components/profil_picture_component.dart'; import '../main.dart'; import '../model/Post.dart'; import '../model/Comment.dart'; @@ -115,10 +116,7 @@ class _DetailPostScreenState extends State { child: ClipOval( child: SizedBox.fromSize( // Image radius - child: Image( - image: NetworkImage(widget.post.user.pp), - width: 45, - ), + child: ProfilPictureComponent(user: widget.post.user), ), ), ) @@ -146,13 +144,9 @@ class _DetailPostScreenState extends State { fontWeight: FontWeight.w800, fontSize: 22, ), - mode: TextScrollMode - .endless, - pauseBetween: Duration( - milliseconds: 500), - velocity: Velocity( - pixelsPerSecond: - Offset(20, 0)), + mode: TextScrollMode.endless, + pauseBetween: Duration(milliseconds: 500), + velocity: Velocity(pixelsPerSecond: Offset(20, 0)), ), ), ), @@ -445,7 +439,7 @@ class _DetailPostScreenState extends State { focusNode: myFocusNode, onSubmitted: (value) async { if (value.isNotEmpty) { - await MyApp.commentViewModel.addComment(value, widget.post.id); + await MyApp.commentViewModel.addComment(value, widget.post.id, widget.post.user); } setState(() { _textController.clear(); @@ -455,11 +449,13 @@ class _DetailPostScreenState extends State { keyboardType: TextInputType.emailAddress, style: GoogleFonts.plusJakartaSans(color: Colors.white), decoration: InputDecoration( - suffixIcon: Icon( - Icons.send, - color: grayText, - size: 20, - ), + suffixIcon: IconButton( + onPressed: () {}, + icon: Icon( + Icons.send, + color: grayText, + size: 20, + )), focusedBorder: OutlineInputBorder( borderSide: BorderSide(width: 1, color: grayText), borderRadius: BorderRadius.all(Radius.circular(100)), @@ -491,8 +487,7 @@ class _DetailPostScreenState extends State { class MyBehavior extends ScrollBehavior { @override - Widget buildOverscrollIndicator( - BuildContext context, Widget child, ScrollableDetails details) { + Widget buildOverscrollIndicator(BuildContext context, Widget child, ScrollableDetails details) { return child; } } diff --git a/Sources/justMUSIC/lib/screens/feed_screen.dart b/Sources/justMUSIC/lib/screens/feed_screen.dart index c7b73dc..4382192 100644 --- a/Sources/justMUSIC/lib/screens/feed_screen.dart +++ b/Sources/justMUSIC/lib/screens/feed_screen.dart @@ -56,6 +56,7 @@ class _FeedScreenState extends State with SingleTickerProviderStateM @override void dispose() { + controller.dispose(); animationController.dispose(); super.dispose(); } @@ -120,7 +121,7 @@ class _FeedScreenState extends State with SingleTickerProviderStateM bool empty = (choiceFeed == true && displayFeed.item1.isEmpty) || (choiceFeed == false && displayFeed.item2.isEmpty); return Scaffold( - resizeToAvoidBottomInset: true, + resizeToAvoidBottomInset: false, backgroundColor: bgColor, extendBodyBehindAppBar: true, body: Container( diff --git a/Sources/justMUSIC/lib/view_model/CommentViewModel.dart b/Sources/justMUSIC/lib/view_model/CommentViewModel.dart index c3aa0a4..de2c0de 100644 --- a/Sources/justMUSIC/lib/view_model/CommentViewModel.dart +++ b/Sources/justMUSIC/lib/view_model/CommentViewModel.dart @@ -1,19 +1,24 @@ import 'package:justmusic/model/mapper/CommentMapper.dart'; import '../model/Comment.dart'; +import '../model/User.dart'; import '../services/CommentService.dart'; +import '../services/NotificationService.dart'; class CommentViewModel { List _comments = []; final CommentService _commentService = CommentService(); + final NotificationService _notificationService = NotificationService(); // Constructor CommentViewModel(); // Methods - addComment(String text, String idPost) async { + addComment(String text, String idPost, User receiver) async { try { + print(receiver.token); await _commentService.createComment(text, idPost); + _notificationService.sendNotifyComment(receiver.token, text); } catch (e) { print(e); rethrow; From 95c90cc25added25c9d50d8a1cfb50599ef06c4e Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Thu, 3 Aug 2023 23:44:06 +0200 Subject: [PATCH 5/6] add icon --- Sources/justMUSIC/lib/main.dart | 31 +- .../lib/screens/detail_post_screen.dart | 761 +++++++++--------- 2 files changed, 395 insertions(+), 397 deletions(-) diff --git a/Sources/justMUSIC/lib/main.dart b/Sources/justMUSIC/lib/main.dart index cfcdb8a..391db40 100644 --- a/Sources/justMUSIC/lib/main.dart +++ b/Sources/justMUSIC/lib/main.dart @@ -106,36 +106,7 @@ class _MyAppState extends State { theme: ThemeData( primarySwatch: Colors.blue, ), - home: StreamBuilder( - stream: FirebaseAuth.instance.authStateChanges(), - builder: (context, snapshot) { - if (snapshot.connectionState == ConnectionState.waiting) { - return LoadingScreen(); - } else if (snapshot.hasData) { - return FutureBuilder( - future: MyApp.userViewModel.getUser(snapshot.data!.uid), - builder: (context, userSnapshot) { - if (userSnapshot.connectionState == ConnectionState.waiting) { - return LoadingScreen(); - } else if (userSnapshot.hasData) { - MyApp.userViewModel.userCurrent = userSnapshot.data!; - return AnimatedSwitcher( - duration: Duration(milliseconds: 1000), - transitionBuilder: (child, animation) { - return FadeTransition(opacity: animation, child: child); - }, - child: FeedScreen(), - ); - } else { - return WellcomeScreen(); - } - }, - ); - } else { - return WellcomeScreen(); - } - }, - )); + home: WellcomeScreen()); }, designSize: Size(390, 844), ); diff --git a/Sources/justMUSIC/lib/screens/detail_post_screen.dart b/Sources/justMUSIC/lib/screens/detail_post_screen.dart index 33027e9..a99e540 100644 --- a/Sources/justMUSIC/lib/screens/detail_post_screen.dart +++ b/Sources/justMUSIC/lib/screens/detail_post_screen.dart @@ -61,427 +61,454 @@ class _DetailPostScreenState extends State { @override Widget build(BuildContext context) { - return Container( - height: 760.h, - child: Column( - children: [ - Expanded( - child: Stack( - children: [ - ScrollConfiguration( - behavior: MyBehavior(), - child: SingleChildScrollView( - controller: _scrollController, - physics: AlwaysScrollableScrollPhysics(), - child: Stack( - clipBehavior: Clip.hardEdge, - children: [ - Align( - alignment: Alignment.topCenter, - child: Container( - height: 400, - width: double.infinity, - child: FadeInImage.assetNetwork( - placeholder: "assets/images/loadingPlaceholder.gif", - image: choice ? widget.post.selfie! : widget.post.music.cover!, - width: double.infinity, - fit: BoxFit.cover, - ), - ), - ), - Column( + return GestureDetector( + onTap: () { + FocusScopeNode currentFocus = FocusScope.of(context); + if (!currentFocus.hasPrimaryFocus) { + currentFocus.unfocus(); + resetFullScreen(); + } + }, + child: Container( + height: 760.h, + child: Column( + children: [ + Expanded( + child: Stack( + children: [ + ScrollConfiguration( + behavior: MyBehavior(), + child: SingleChildScrollView( + controller: _scrollController, + physics: AlwaysScrollableScrollPhysics(), + child: Stack( + clipBehavior: Clip.hardEdge, children: [ - Container( - height: 200, - margin: EdgeInsets.only(top: 230), - width: double.infinity, - decoration: const BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [Colors.transparent, bgModal], - stops: [0, 0.8], + Align( + alignment: Alignment.topCenter, + child: Container( + height: 400, + width: double.infinity, + child: FadeInImage.assetNetwork( + placeholder: "assets/images/loadingPlaceholder.gif", + image: choice ? widget.post.selfie! : widget.post.music.cover!, + width: double.infinity, + fit: BoxFit.cover, ), ), - child: Padding( - padding: const EdgeInsets.fromLTRB(20, 0, 20, 10), - child: Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Padding( - padding: const EdgeInsets.only(right: 10), - child: choice - ? Padding( - padding: const EdgeInsets.all(4), - child: ClipOval( - child: SizedBox.fromSize( - // Image radius - child: ProfilPictureComponent(user: widget.post.user), - ), - ), - ) - : widget.post.music.previewUrl != null - ? ButtonPlayComponent(music: widget.post.music) - : Container(), + ), + Column( + children: [ + Container( + height: 200, + margin: EdgeInsets.only(top: 230), + width: double.infinity, + decoration: const BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [Colors.transparent, bgModal], + stops: [0, 0.8], ), - Flexible( - child: Column( - mainAxisAlignment: MainAxisAlignment.end, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Flexible( - child: Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Expanded( - child: ScrollConfiguration( - behavior: ScrollBehavior().copyWith(scrollbars: false), - child: TextScroll( - choice ? widget.post.user.pseudo : widget.post.music.title!, - style: GoogleFonts.plusJakartaSans( - height: 1, - color: Colors.white, - fontWeight: FontWeight.w800, - fontSize: 22, - ), - mode: TextScrollMode.endless, - pauseBetween: Duration(milliseconds: 500), - velocity: Velocity(pixelsPerSecond: Offset(20, 0)), + ), + child: Padding( + padding: const EdgeInsets.fromLTRB(20, 0, 20, 10), + child: Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Padding( + padding: const EdgeInsets.only(right: 10), + child: choice + ? Padding( + padding: const EdgeInsets.all(4), + child: ClipOval( + child: SizedBox.fromSize( + // Image radius + child: ProfilPictureComponent(user: widget.post.user), ), ), - ), - Padding( - padding: const EdgeInsets.only(left: 20.0), - child: choice - ? DateTime(today.year, today.month, today.day).isAtSameMomentAs( - DateTime( - widget.post.date.year, - widget.post.date.month, - widget.post.date.day, + ) + : widget.post.music.previewUrl != null + ? ButtonPlayComponent(music: widget.post.music) + : Container(), + ), + Flexible( + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Flexible( + child: Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Expanded( + child: ScrollConfiguration( + behavior: ScrollBehavior().copyWith(scrollbars: false), + child: TextScroll( + choice ? widget.post.user.pseudo : widget.post.music.title!, + style: GoogleFonts.plusJakartaSans( + height: 1, + color: Colors.white, + fontWeight: FontWeight.w800, + fontSize: 22, ), - ) - ? Text( - "Aujourd'hui, ${widget.post.date.hour}:${widget.post.date.minute}", - style: GoogleFonts.plusJakartaSans( - height: 1, - color: Colors.white, - fontWeight: FontWeight.w900, - fontSize: 18, + mode: TextScrollMode.endless, + pauseBetween: Duration(milliseconds: 500), + velocity: Velocity(pixelsPerSecond: Offset(20, 0)), + ), + ), + ), + Padding( + padding: const EdgeInsets.only(left: 20.0), + child: choice + ? DateTime(today.year, today.month, today.day) + .isAtSameMomentAs( + DateTime( + widget.post.date.year, + widget.post.date.month, + widget.post.date.day, ), ) + ? Text( + "Aujourd'hui, ${widget.post.date.hour}:${widget.post.date.minute}", + style: GoogleFonts.plusJakartaSans( + height: 1, + color: Colors.white, + fontWeight: FontWeight.w900, + fontSize: 18, + ), + ) + : Text( + "hier, ${widget.post.date.hour}:${widget.post.date.minute}", + style: GoogleFonts.plusJakartaSans( + height: 1, + color: Colors.white, + fontWeight: FontWeight.w900, + fontSize: 18, + ), + ) : Text( - "hier, ${widget.post.date.hour}:${widget.post.date.minute}", + widget.post.music.date.toString(), style: GoogleFonts.plusJakartaSans( height: 1, color: Colors.white, fontWeight: FontWeight.w900, fontSize: 18, ), - ) + ), + ), + ], + ), + ), + choice + ? widget.post.location.item2 != null + ? Text( + "${widget.post.location.item1}, ${widget.post.location.item2}", + style: GoogleFonts.plusJakartaSans( + color: Colors.white.withOpacity(0.5), + fontWeight: FontWeight.w400, + fontSize: 15, + ), + ) : Text( - widget.post.music.date.toString(), + "", style: GoogleFonts.plusJakartaSans( - height: 1, - color: Colors.white, - fontWeight: FontWeight.w900, - fontSize: 18, + color: Colors.white.withOpacity(0.4), + fontWeight: FontWeight.w300, + fontSize: 13, ), + ) + : ScrollConfiguration( + behavior: ScrollBehavior().copyWith(scrollbars: false), + child: TextScroll( + widget.post.music.artists.first.name!, + style: GoogleFonts.plusJakartaSans( + height: 1, + color: Colors.white, + fontWeight: FontWeight.w500, + fontSize: 17, ), - ), - ], - ), - ), - choice - ? widget.post.location.item2 != null - ? Text( - "${widget.post.location.item1}, ${widget.post.location.item2}", - style: GoogleFonts.plusJakartaSans( - color: Colors.white.withOpacity(0.5), - fontWeight: FontWeight.w400, - fontSize: 15, - ), - ) - : Text( - "", - style: GoogleFonts.plusJakartaSans( - color: Colors.white.withOpacity(0.4), - fontWeight: FontWeight.w300, - fontSize: 13, + mode: TextScrollMode.endless, + pauseBetween: Duration(milliseconds: 500), + velocity: Velocity(pixelsPerSecond: Offset(20, 0)), ), - ) - : ScrollConfiguration( - behavior: ScrollBehavior().copyWith(scrollbars: false), - child: TextScroll( - widget.post.music.artists.first.name!, - style: GoogleFonts.plusJakartaSans( - height: 1, - color: Colors.white, - fontWeight: FontWeight.w500, - fontSize: 17, ), - mode: TextScrollMode.endless, - pauseBetween: Duration(milliseconds: 500), - velocity: Velocity(pixelsPerSecond: Offset(20, 0)), - ), - ), - ], - ), - ), - ], - ), - ), - ), - widget.post.description != null - ? Align( - alignment: Alignment.bottomLeft, - child: Padding( - padding: const EdgeInsets.fromLTRB(50, 35, 50, 35), - child: Text( - widget.post.description!, - textAlign: TextAlign.left, - style: GoogleFonts.plusJakartaSans( - height: 1, - color: Colors.white, - fontWeight: FontWeight.w400, - fontSize: 14, + ], + ), ), - ), + ], ), - ) - : Container( - height: 30, - ), - Container( - width: double.infinity, - decoration: const BoxDecoration( - color: bgAppBar, - border: Border( - top: BorderSide( - color: Color(0xFF262626), - width: 1.0, ), ), - ), - child: Column( - children: [ - Padding( - padding: EdgeInsets.symmetric(vertical: 20), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - SvgPicture.asset("assets/images/heart.svg", semanticsLabel: 'Like Logo'), - GestureDetector( - onTap: () { - myFocusNode.requestFocus(); - }, - child: - SvgPicture.asset("assets/images/chat.svg", semanticsLabel: 'Chat Logo'), + widget.post.description != null + ? Align( + alignment: Alignment.bottomLeft, + child: Padding( + padding: const EdgeInsets.fromLTRB(50, 35, 50, 35), + child: Text( + widget.post.description!, + textAlign: TextAlign.left, + style: GoogleFonts.plusJakartaSans( + height: 1, + color: Colors.white, + fontWeight: FontWeight.w400, + fontSize: 14, + ), + ), ), - SvgPicture.asset("assets/images/add.svg", semanticsLabel: 'Add playlist Logo'), - SvgPicture.asset("assets/images/save.svg", semanticsLabel: 'Save Logo'), - SvgPicture.asset("assets/images/report.svg", semanticsLabel: 'Report Logo'), - ], + ) + : Container( + height: 30, + ), + Container( + width: double.infinity, + decoration: const BoxDecoration( + color: bgAppBar, + border: Border( + top: BorderSide( + color: Color(0xFF262626), + width: 1.0, + ), ), ), - FutureBuilder>( - future: MyApp.commentViewModel.getCommentsByPostId(widget.post.id), - builder: (BuildContext context, AsyncSnapshot> snapshot) { - if (snapshot.hasData) { - print("test:"); - return Column( + child: Column( + children: [ + Padding( + padding: EdgeInsets.symmetric(vertical: 20), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - snapshot.data!.length > 0 - ? Padding( - padding: const EdgeInsets.all(15.0), - child: RichText( - text: TextSpan( - text: snapshot.data!.length.toString(), - style: GoogleFonts.plusJakartaSans( - color: Colors.white, - fontWeight: FontWeight.w800, - ), - children: [ - TextSpan( - text: snapshot.data!.length > 1 - ? " commentaires" - : " commentaire", + SvgPicture.asset("assets/images/heart.svg", semanticsLabel: 'Like Logo'), + GestureDetector( + onTap: () { + myFocusNode.requestFocus(); + }, + child: SvgPicture.asset("assets/images/chat.svg", + semanticsLabel: 'Chat Logo'), + ), + SvgPicture.asset("assets/images/add.svg", + semanticsLabel: 'Add playlist Logo'), + SvgPicture.asset("assets/images/save.svg", semanticsLabel: 'Save Logo'), + SvgPicture.asset("assets/images/report.svg", semanticsLabel: 'Report Logo'), + ], + ), + ), + FutureBuilder>( + future: MyApp.commentViewModel.getCommentsByPostId(widget.post.id), + builder: (BuildContext context, AsyncSnapshot> snapshot) { + if (snapshot.hasData) { + return Column( + children: [ + snapshot.data!.length > 0 + ? Padding( + padding: const EdgeInsets.all(15.0), + child: RichText( + text: TextSpan( + text: snapshot.data!.length.toString(), style: GoogleFonts.plusJakartaSans( color: Colors.white, - fontWeight: FontWeight.w400, + fontWeight: FontWeight.w800, ), + children: [ + TextSpan( + text: snapshot.data!.length > 1 + ? " commentaires" + : " commentaire", + style: GoogleFonts.plusJakartaSans( + color: Colors.white, + fontWeight: FontWeight.w400, + ), + ), + ], ), - ], - ), - ), - ) - : Container(), - snapshot.data!.length > 0 - ? Padding( - padding: const EdgeInsets.fromLTRB(20, 0, 20, 20), - child: ListView.builder( - shrinkWrap: true, - physics: NeverScrollableScrollPhysics(), - itemCount: snapshot.data?.length, - itemBuilder: (BuildContext context, int index) { - return CommentComponent(comment: snapshot.data![index]); - }, - ), - ) - : Container(), - ], - ); - } else { - return Container( - child: Center( - child: CupertinoActivityIndicator(), - ), - ); - } - }, + ), + ) + : Container(), + snapshot.data!.length > 0 + ? Padding( + padding: const EdgeInsets.fromLTRB(20, 0, 20, 20), + child: ListView.builder( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + itemCount: snapshot.data?.length, + itemBuilder: (BuildContext context, int index) { + return CommentComponent(comment: snapshot.data![index]); + }, + ), + ) + : Container(), + ], + ); + } else { + return Container( + child: Center( + child: CupertinoActivityIndicator(), + ), + ); + } + }, + ), + ], ), - ], - ), + ), + ], ), - ], - ), - widget.post.selfie != null - ? Align( - alignment: Alignment.topRight, - child: ZoomTapAnimation( - onTap: () { - if (widget.post.selfie != null) { - switchChoice(); - } - }, - enableLongTapRepeatEvent: false, - longTapRepeatDuration: const Duration(milliseconds: 100), - begin: 1.0, - end: 0.96, - beginDuration: const Duration(milliseconds: 70), - endDuration: const Duration(milliseconds: 100), - beginCurve: Curves.decelerate, - endCurve: Curves.easeInOutSine, - child: Container( - margin: EdgeInsets.all(20), - width: 120, - height: 120, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(20), - border: Border.all(width: 4, color: Colors.white), - ), - child: ClipRRect( - borderRadius: BorderRadius.circular(15), - // implementer l'image - child: Image( - image: NetworkImage(choice ? widget.post.music.cover! : widget.post.selfie!), - fit: BoxFit.cover, + widget.post.selfie != null + ? Align( + alignment: Alignment.topRight, + child: ZoomTapAnimation( + onTap: () { + if (widget.post.selfie != null) { + switchChoice(); + } + }, + enableLongTapRepeatEvent: false, + longTapRepeatDuration: const Duration(milliseconds: 100), + begin: 1.0, + end: 0.96, + beginDuration: const Duration(milliseconds: 70), + endDuration: const Duration(milliseconds: 100), + beginCurve: Curves.decelerate, + endCurve: Curves.easeInOutSine, + child: Container( + margin: EdgeInsets.all(20), + width: 120, + height: 120, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20), + border: Border.all(width: 4, color: Colors.white), + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(15), + // implementer l'image + child: Image( + image: + NetworkImage(choice ? widget.post.music.cover! : widget.post.selfie!), + fit: BoxFit.cover, + ), + ), ), ), - ), - ), - ) - : Container(), - ], + ) + : Container(), + ], + ), + ), ), - ), - ), - Align( - alignment: Alignment.topCenter, - child: Container( - height: 50, - width: double.infinity, - color: Colors.transparent, - child: Align( + Align( alignment: Alignment.topCenter, child: Container( - margin: EdgeInsets.only(top: 10), - width: 60, - height: 5, - decoration: BoxDecoration( - color: Colors.white.withOpacity(0.6), - borderRadius: BorderRadius.circular(20), + height: 50, + width: double.infinity, + color: Colors.transparent, + child: Align( + alignment: Alignment.topCenter, + child: Container( + margin: EdgeInsets.only(top: 10), + width: 60, + height: 5, + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.6), + borderRadius: BorderRadius.circular(20), + ), + ), ), ), ), - ), + ], ), - ], - ), - ), - Padding( - padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), - child: Container( - height: 70, - width: double.infinity, - decoration: BoxDecoration( - border: Border(top: BorderSide(color: grayColor, width: 2)), - color: textFieldMessage, ), - child: Center( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: Row( - children: [ - ClipOval( - child: SizedBox.fromSize( - // Rayon de l'image - child: Image.network( - MyApp.userViewModel.userCurrent.pp, - width: 45, - ), - ), - ), - SizedBox(width: 10), - Expanded( - child: TextField( - keyboardAppearance: Brightness.dark, - controller: _textController, - focusNode: myFocusNode, - onSubmitted: (value) async { - if (value.isNotEmpty) { - await MyApp.commentViewModel.addComment(value, widget.post.id, widget.post.user); - } - setState(() { - _textController.clear(); - }); - }, - cursorColor: primaryColor, - keyboardType: TextInputType.emailAddress, - style: GoogleFonts.plusJakartaSans(color: Colors.white), - decoration: InputDecoration( - suffixIcon: IconButton( - onPressed: () {}, - icon: Icon( - Icons.send, - color: grayText, - size: 20, - )), - focusedBorder: OutlineInputBorder( - borderSide: BorderSide(width: 1, color: grayText), - borderRadius: BorderRadius.all(Radius.circular(100)), + Padding( + padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), + child: Container( + height: 70, + width: double.infinity, + decoration: BoxDecoration( + border: Border(top: BorderSide(color: grayColor, width: 2)), + color: textFieldMessage, + ), + child: Center( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Row( + children: [ + ClipOval( + child: SizedBox.fromSize( + // Rayon de l'image + child: Image.network( + MyApp.userViewModel.userCurrent.pp, + width: 45, + ), ), - contentPadding: EdgeInsets.only(top: 0, bottom: 0, left: 20, right: 20), - fillColor: bgModal, - filled: true, - focusColor: Color.fromRGBO(255, 255, 255, 0.30), - enabledBorder: OutlineInputBorder( - borderSide: BorderSide(width: 1, color: grayText), - borderRadius: BorderRadius.all(Radius.circular(100)), + ), + SizedBox(width: 10), + Expanded( + child: TextField( + keyboardAppearance: Brightness.dark, + controller: _textController, + focusNode: myFocusNode, + onSubmitted: (value) async { + if (value.isNotEmpty) { + await MyApp.commentViewModel.addComment(value, widget.post.id, widget.post.user); + } + setState(() { + _textController.clear(); + }); + }, + onChanged: (value) { + setState(() {}); + }, + cursorColor: primaryColor, + keyboardType: TextInputType.emailAddress, + style: GoogleFonts.plusJakartaSans(color: Colors.white), + decoration: InputDecoration( + suffixIcon: _textController.text.isEmpty + ? Container( + height: 20, + width: 20, + ) + : IconButton( + onPressed: () async { + if (_textController.text.isNotEmpty) { + await MyApp.commentViewModel + .addComment(_textController.text, widget.post.id, widget.post.user); + } + myFocusNode.unfocus(); + setState(() { + _textController.clear(); + }); + }, + icon: Icon( + Icons.send, + color: primaryColor, + size: 20, + )), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(width: 1, color: grayText), + borderRadius: BorderRadius.all(Radius.circular(100)), + ), + contentPadding: EdgeInsets.only(top: 0, bottom: 0, left: 20, right: 20), + fillColor: bgModal, + filled: true, + focusColor: Color.fromRGBO(255, 255, 255, 0.30), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(width: 1, color: grayText), + borderRadius: BorderRadius.all(Radius.circular(100)), + ), + hintText: 'Ajoutez une réponse...', + hintStyle: GoogleFonts.plusJakartaSans(color: grayText), + ), ), - hintText: 'Ajoutez une réponse...', - hintStyle: GoogleFonts.plusJakartaSans(color: grayText), ), - ), + ], ), - ], + ), ), ), ), - ), + ], ), - ], - ), - ); + )); } } From 6ffe34bd4fc728731ab254ab977c8fbaeed95326 Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Fri, 4 Aug 2023 00:01:09 +0200 Subject: [PATCH 6/6] add icon --- .../lib/components/editable_post_component.dart | 10 +++++++--- .../justMUSIC/lib/screens/search_song_screen.dart | 13 +++++++++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Sources/justMUSIC/lib/components/editable_post_component.dart b/Sources/justMUSIC/lib/components/editable_post_component.dart index fa60606..82e0d30 100644 --- a/Sources/justMUSIC/lib/components/editable_post_component.dart +++ b/Sources/justMUSIC/lib/components/editable_post_component.dart @@ -1,8 +1,6 @@ import 'dart:io'; - import 'package:animated_appear/animated_appear.dart'; import 'package:auto_size_text/auto_size_text.dart'; -import 'package:circular_reveal_animation/circular_reveal_animation.dart'; import 'package:flutter/Material.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/services.dart'; @@ -143,8 +141,14 @@ class _EditablePostComponentState extends State with Tick // implement image child: widget.music == null ? Container( - color: grayColor, width: double.infinity, + child: Center( + child: Icon( + Icons.headphones, + color: grayColor.withOpacity(0.4), + size: 150, + ), + ), ) : Image( image: NetworkImage(widget.music?.cover ?? ""), diff --git a/Sources/justMUSIC/lib/screens/search_song_screen.dart b/Sources/justMUSIC/lib/screens/search_song_screen.dart index 9e20070..8b702de 100644 --- a/Sources/justMUSIC/lib/screens/search_song_screen.dart +++ b/Sources/justMUSIC/lib/screens/search_song_screen.dart @@ -21,6 +21,7 @@ class SearchSongScreen extends StatefulWidget { class _SearchSongScreenState extends State { final ScrollController _scrollController = ScrollController(); final TextEditingController _textEditingController = TextEditingController(); + int? playingIndex; Future resetFullScreen() async { @@ -32,9 +33,18 @@ class _SearchSongScreenState extends State { @override void initState() { super.initState(); + fetchTrendingMusic(); _scrollController.addListener(_scrollListener); } + Future fetchTrendingMusic() async { + await MyApp.musicViewModel.getMusicsWithPlaylistId('37i9dQZF1DX1X23oiQRTB5').then((value) { + setState(() { + filteredData = value; + }); + }); + } + Future _scrollListener() async { if (_scrollController.position.pixels == _scrollController.position.maxScrollExtent) { filteredData.addAll(await MyApp.musicViewModel @@ -120,8 +130,7 @@ class _SearchSongScreenState extends State { onEditingComplete: resetFullScreen, onSubmitted: (value) async { if (_textEditingController.text.isEmpty) { - } else if (value == " ") { - print("popular"); + fetchTrendingMusic(); } else { filteredData = await MyApp.musicViewModel.getMusicsWithNameOrArtistName(value); setState(() {