change text artist and title
continuous-integration/drone/push Build is passing Details

MANAGE_COMMENTS_LDE
Lucas Delanier 2 years ago
parent eece9357ec
commit 929f090464

@ -2,17 +2,24 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:justmusic/model/Comment.dart';
import '../values/constants.dart'; import '../values/constants.dart';
class CommentComponent extends StatelessWidget { class CommentComponent extends StatelessWidget {
const CommentComponent({Key? key}) : super(key: key); final Comment comment;
const CommentComponent({Key? key, required this.comment}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final now = DateTime.now();
final difference = now.difference(comment.date);
return Container( return Container(
width: double.infinity, width: double.infinity,
decoration: BoxDecoration(color: bgComment, borderRadius: BorderRadius.circular(20)), decoration: BoxDecoration(color: bgComment, borderRadius: BorderRadius.circular(20)),
padding: EdgeInsets.all(20), padding: EdgeInsets.all(20),
margin: EdgeInsets.only(bottom: 20),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -20,28 +27,30 @@ class CommentComponent extends StatelessWidget {
child: SizedBox.fromSize( child: SizedBox.fromSize(
// Image radius // Image radius
child: Image( child: Image(
image: AssetImage("assets/images/exemple_profile.png"), image: NetworkImage(comment.user.pp),
width: 40, width: 40,
), ),
), ),
), ),
Expanded( Expanded(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
SizedBox( SizedBox(
width: 10, width: 10,
), ),
Text( Text(
"Melina", comment.user.pseudo,
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w600), style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w600),
), ),
Padding( Padding(
padding: EdgeInsets.only(top: 6, left: 10), padding: EdgeInsets.only(top: 6, left: 10),
child: Text( child: Text(
"Il y a 2 min(s)", "il y a ${difference.inHours}h",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white.withOpacity(0.6), fontWeight: FontWeight.w400, fontSize: 10), color: Colors.white.withOpacity(0.6), fontWeight: FontWeight.w400, fontSize: 10),
), ),
@ -54,8 +63,8 @@ class CommentComponent extends StatelessWidget {
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 10), padding: const EdgeInsets.symmetric(horizontal: 10),
child: Text( child: Text(
"Jadore ce son aussi, je trouve quil avait vraiment une plume de fou.", comment.text,
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w300, fontSize: 11), style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w400, fontSize: 12),
), ),
), ),
], ],

@ -17,6 +17,7 @@ import 'package:justmusic/screens/profile_screen.dart';
import 'package:justmusic/screens/registration_screen.dart'; import 'package:justmusic/screens/registration_screen.dart';
import 'package:justmusic/screens/welcome_screen.dart'; import 'package:justmusic/screens/welcome_screen.dart';
import 'package:justmusic/values/constants.dart'; import 'package:justmusic/values/constants.dart';
import 'package:justmusic/view_model/CommentViewModel.dart';
import 'package:justmusic/view_model/MusicViewModel.dart'; import 'package:justmusic/view_model/MusicViewModel.dart';
import 'package:justmusic/view_model/PostViewModel.dart'; import 'package:justmusic/view_model/PostViewModel.dart';
import 'package:justmusic/view_model/UserViewModel.dart'; import 'package:justmusic/view_model/UserViewModel.dart';
@ -38,6 +39,7 @@ class MyApp extends StatefulWidget {
static MusicViewModel musicViewModel = MusicViewModel(); static MusicViewModel musicViewModel = MusicViewModel();
static PostViewModel postViewModel = PostViewModel(); static PostViewModel postViewModel = PostViewModel();
static AudioPlayer audioPlayer = AudioPlayer(); static AudioPlayer audioPlayer = AudioPlayer();
static CommentViewModel commentViewModel = CommentViewModel();
const MyApp({super.key}); const MyApp({super.key});

@ -8,10 +8,6 @@ class CommentMapper {
static Future<Comment> toModel(DocumentSnapshot<Map<String, dynamic>> snapshot) async { static Future<Comment> toModel(DocumentSnapshot<Map<String, dynamic>> snapshot) async {
final data = snapshot.data(); final data = snapshot.data();
User? user = await MyApp.userViewModel.getUser(data?['user_id']); User? user = await MyApp.userViewModel.getUser(data?['user_id']);
return Comment( return Comment(snapshot.id, user!, data?["text"] ?? "", data?["date"].toDate());
snapshot.id,
user!,
data?["text"],
data?["date"]);
} }
} }

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter/Material.dart'; import 'package:flutter/Material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart'; import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -15,6 +16,7 @@ import '../components/comment_component.dart';
import '../main.dart'; import '../main.dart';
import '../model/Post.dart'; import '../model/Post.dart';
import '../model/Comment.dart';
import '../values/constants.dart'; import '../values/constants.dart';
class DetailPostScreen extends StatefulWidget { class DetailPostScreen extends StatefulWidget {
@ -73,373 +75,429 @@ class _DetailPostScreenState extends State<DetailPostScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context); FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) { if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus(); currentFocus.unfocus();
resetFullScreen(); resetFullScreen();
} }
}, },
child: Container( child: Container(
height: 760.h, height: 760.h,
child: Column( child: Column(
children: [ children: [
Expanded( Expanded(
child: Stack( child: Stack(
children: [ children: [
ScrollConfiguration( ScrollConfiguration(
behavior: MyBehavior(), behavior: MyBehavior(),
child: SingleChildScrollView( child: SingleChildScrollView(
controller: _scrollController, controller: _scrollController,
physics: AlwaysScrollableScrollPhysics(), physics: AlwaysScrollableScrollPhysics(),
child: Stack( child: Stack(
clipBehavior: Clip.hardEdge, 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(
children: [ children: [
Align( Container(
alignment: Alignment.topCenter, height: 200,
child: Container( margin: EdgeInsets.only(top: 230),
height: 400, width: double.infinity,
width: double.infinity, decoration: const BoxDecoration(
child: FadeInImage.assetNetwork( gradient: LinearGradient(
placeholder: "assets/images/loadingPlaceholder.gif", begin: Alignment.topCenter,
image: choice ? widget.post.selfie! : widget.post.music.cover!, end: Alignment.bottomCenter,
width: double.infinity, colors: [Colors.transparent, bgModal],
fit: BoxFit.cover, stops: [0, 0.8],
), ),
)), ),
Column( child: Padding(
children: [ padding: const EdgeInsets.fromLTRB(20, 0, 20, 10),
Container( child: Row(
height: 200, crossAxisAlignment: CrossAxisAlignment.end,
margin: EdgeInsets.only(top: 230), children: [
width: double.infinity, Padding(
decoration: const BoxDecoration( padding: const EdgeInsets.only(right: 10),
gradient: LinearGradient( child: choice
begin: Alignment.topCenter, ? Padding(
end: Alignment.bottomCenter, padding: const EdgeInsets.all(4),
colors: [Colors.transparent, bgModal], child: ClipOval(
stops: [0, 0.8]), child: SizedBox.fromSize(
), // Image radius
child: Padding( child: Image(
padding: const EdgeInsets.fromLTRB(20, 0, 20, 10), image: NetworkImage(widget.post.user.pp),
child: Row( width: 45,
crossAxisAlignment: CrossAxisAlignment.end, ),
children: [ ),
Padding( ),
padding: const EdgeInsets.only(right: 10), )
child: choice : widget.post.music.previewUrl != null
? Padding( ? ButtonPlayComponent(music: widget.post.music)
padding: const EdgeInsets.all(4), : Container(),
child: ClipOval( ),
child: SizedBox.fromSize( Flexible(
// Image radius child: Column(
child: Image( mainAxisAlignment: MainAxisAlignment.end,
image: NetworkImage(widget.post.user.pp), crossAxisAlignment: CrossAxisAlignment.start,
width: 45, 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)),
), ),
), ),
) ),
: widget.post.music.previewUrl != null Padding(
? ButtonPlayComponent(music: widget.post.music) padding: const EdgeInsets.only(left: 20.0),
: Container(), child: choice
), ? DateTime(today.year, today.month, today.day).isAtSameMomentAs(
Flexible( DateTime(
child: Column( widget.post.date.year,
mainAxisAlignment: MainAxisAlignment.end, widget.post.date.month,
crossAxisAlignment: CrossAxisAlignment.start, widget.post.date.day,
children: [ ),
Flexible( )
child: Row( ? Text(
crossAxisAlignment: CrossAxisAlignment.end, "Aujourd'hui, ${widget.post.date.hour}:${widget.post.date.minute}",
children: [
Expanded(
child: ScrollConfiguration(
behavior: ScrollBehavior().copyWith(scrollbars: false),
child: TextScroll(
choice
? widget.post.user.pseudo
: widget.post.music.title!,
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
height: 1, height: 1,
color: Colors.white, color: Colors.white,
fontWeight: FontWeight.w800, fontWeight: FontWeight.w900,
fontSize: 22), 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( : Text(
widget.post.music.date.toString(), "hier, ${widget.post.date.hour}:${widget.post.date.minute}",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
height: 1, height: 1,
color: Colors.white, color: Colors.white,
fontWeight: FontWeight.w900, fontWeight: FontWeight.w900,
fontSize: 18), 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( : Text(
"", widget.post.music.date.toString(),
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white.withOpacity(0.4), height: 1,
fontWeight: FontWeight.w300, color: Colors.white,
fontSize: 13), fontWeight: FontWeight.w900,
) fontSize: 18,
: 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))),
)
],
), ),
), 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,
),
)
: 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, widget.post.description != null
child: Padding( ? Align(
padding: const EdgeInsets.fromLTRB(50, 35, 50, 35), alignment: Alignment.bottomLeft,
child: Text( child: Padding(
widget.post.description!, padding: const EdgeInsets.fromLTRB(50, 35, 50, 35),
textAlign: TextAlign.left, child: Text(
style: GoogleFonts.plusJakartaSans( widget.post.description!,
height: 1, textAlign: TextAlign.left,
color: Colors.white, style: GoogleFonts.plusJakartaSans(
fontWeight: FontWeight.w400, height: 1,
fontSize: 14), 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), // Couleur de la bordure
width: 1.0, // Épaisseur de la bordure
), ),
), ),
)
: Container(
height: 30,
), ),
child: Column( Container(
children: [ width: double.infinity,
Padding( decoration: const BoxDecoration(
padding: EdgeInsets.symmetric(vertical: 20), color: bgAppBar,
child: Row( border: Border(
mainAxisAlignment: MainAxisAlignment.spaceEvenly, top: BorderSide(
children: [ color: Color(0xFF262626),
SvgPicture.asset("assets/images/heart.svg", semanticsLabel: 'Like Logo'), width: 1.0,
GestureDetector( ),
onTap: () { ),
myFocusNode.requestFocus(); ),
}, child: Column(
child: SvgPicture.asset("assets/images/chat.svg", children: [
semanticsLabel: 'Chat Logo')), Padding(
SvgPicture.asset("assets/images/add.svg", padding: EdgeInsets.symmetric(vertical: 20),
semanticsLabel: 'Add playlist Logo'), child: Row(
SvgPicture.asset("assets/images/save.svg", semanticsLabel: 'Save Logo'), mainAxisAlignment: MainAxisAlignment.spaceEvenly,
SvgPicture.asset("assets/images/report.svg", children: [
semanticsLabel: 'Report Logo'), 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",
Padding( semanticsLabel: 'Add playlist Logo'),
padding: const EdgeInsets.all(15.0), SvgPicture.asset("assets/images/save.svg", semanticsLabel: 'Save Logo'),
child: RichText( SvgPicture.asset("assets/images/report.svg", semanticsLabel: 'Report Logo'),
text: TextSpan( ],
text: "3", ),
style: GoogleFonts.plusJakartaSans( ),
color: Colors.white, fontWeight: FontWeight.w800), FutureBuilder<List<Comment>>(
children: [ future: MyApp.commentViewModel.getCommentsByPostId(widget.post.id),
TextSpan( builder: (BuildContext context, AsyncSnapshot<List<Comment>> snapshot) {
text: " commentaires", if (snapshot.hasData) {
style: GoogleFonts.plusJakartaSans( print("test:");
color: Colors.white, fontWeight: FontWeight.w400), return Column(
)
])),
),
Padding(
padding: EdgeInsets.fromLTRB(20, 0, 20, 20),
child: Wrap(
runSpacing: 13,
children: [ children: [
CommentComponent(), snapshot.data!.length > 0
CommentComponent(), ? Padding(
CommentComponent(), 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",
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(),
),
);
}
},
), ),
), ],
], ),
), ),
widget.post.selfie != null ],
? Align( ),
alignment: Alignment.topRight, widget.post.selfie != null
child: ZoomTapAnimation( ? Align(
onTap: () { alignment: Alignment.topRight,
if (widget.post.selfie != null) { child: ZoomTapAnimation(
switchChoice(); onTap: () {
} if (widget.post.selfie != null) {
}, switchChoice();
enableLongTapRepeatEvent: false, }
longTapRepeatDuration: const Duration(milliseconds: 100), },
begin: 1.0, enableLongTapRepeatEvent: false,
end: 0.96, longTapRepeatDuration: const Duration(milliseconds: 100),
beginDuration: const Duration(milliseconds: 70), begin: 1.0,
endDuration: const Duration(milliseconds: 100), end: 0.96,
beginCurve: Curves.decelerate, beginDuration: const Duration(milliseconds: 70),
endCurve: Curves.easeInOutSine, endDuration: const Duration(milliseconds: 100),
child: Container( beginCurve: Curves.decelerate,
margin: EdgeInsets.all(20), endCurve: Curves.easeInOutSine,
width: 120, child: Container(
height: 120, margin: EdgeInsets.all(20),
decoration: BoxDecoration( width: 120,
borderRadius: BorderRadius.circular(20), height: 120,
border: Border.all(width: 4, color: Colors.white)), decoration: BoxDecoration(
child: ClipRRect( borderRadius: BorderRadius.circular(20),
borderRadius: BorderRadius.circular(15), border: Border.all(width: 4, color: Colors.white),
// implement image ),
child: Image( child: ClipRRect(
image: NetworkImage( borderRadius: BorderRadius.circular(15),
choice ? widget.post.music.cover! : widget.post.selfie!), // implementer l'image
fit: BoxFit.cover, 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(
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),
), ),
)),
Align(
alignment: Alignment.topCenter,
child: Container(
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), Padding(
child: Container( padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
height: 70, child: Container(
width: double.infinity, height: 70,
decoration: BoxDecoration( width: double.infinity,
border: Border(top: BorderSide(color: grayColor, width: 2)), color: textFieldMessage), decoration: BoxDecoration(
child: Center( border: Border(top: BorderSide(color: grayColor, width: 2)),
child: Padding( color: textFieldMessage,
padding: const EdgeInsets.symmetric(horizontal: 20), ),
child: Row( child: Center(
children: [ child: Padding(
ClipOval( padding: const EdgeInsets.symmetric(horizontal: 20),
child: SizedBox.fromSize( child: Row(
// Image radius children: [
child: Image.network( ClipOval(
MyApp.userViewModel.userCurrent.pp, child: SizedBox.fromSize(
width: 45, // Rayon de l'image
), child: Image.network(
), MyApp.userViewModel.userCurrent.pp,
), width: 45,
SizedBox(
width: 10,
), ),
Expanded( ),
child: TextField( ),
keyboardAppearance: Brightness.dark, SizedBox(width: 10),
controller: _textController, Expanded(
focusNode: myFocusNode, child: TextField(
cursorColor: primaryColor, keyboardAppearance: Brightness.dark,
keyboardType: TextInputType.emailAddress, controller: _textController,
style: GoogleFonts.plusJakartaSans(color: Colors.white), focusNode: myFocusNode,
decoration: InputDecoration( cursorColor: primaryColor,
suffixIcon: Icon( keyboardType: TextInputType.emailAddress,
Icons.send, style: GoogleFonts.plusJakartaSans(color: Colors.white),
color: grayText, decoration: InputDecoration(
size: 20, suffixIcon: Icon(
), Icons.send,
focusedBorder: OutlineInputBorder( color: grayText,
borderSide: BorderSide(width: 1, color: grayText), size: 20,
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)),
), ),
) 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),
),
),
), ),
), ],
)), ),
),
),
), ),
], ),
), ],
)); ),
),
);
} }
} }

@ -13,8 +13,8 @@ class CommentViewModel {
// Methods // Methods
addComment(String text, String idPost) async { addComment(String text, String idPost) async {
try { try {
await _commentService.createComment(text,idPost); await _commentService.createComment(text, idPost);
} catch(e) { } catch (e) {
print(e); print(e);
rethrow; rethrow;
} }
@ -23,12 +23,15 @@ class CommentViewModel {
Future<List<Comment>> getCommentsByPostId(String id) async { Future<List<Comment>> getCommentsByPostId(String id) async {
try { try {
var responseData = await _commentService.getCommentsByPostId(id); var responseData = await _commentService.getCommentsByPostId(id);
print(responseData.length);
var commentsFutures = responseData.map((value) async { var commentsFutures = responseData.map((value) async {
return await CommentMapper.toModel(value); return await CommentMapper.toModel(value);
}).toList(); }).toList();
_comments = await Future.wait(commentsFutures); _comments = await Future.wait(commentsFutures);
print("ccccccc");
_comments.map((e) => print(e.text));
return _comments; return _comments;
} catch(e) { } catch (e) {
print(e); print(e);
_comments = []; _comments = [];
return []; return [];

Loading…
Cancel
Save