From a010a117de2b457ac74985a68b7243e611684005 Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Sun, 23 Oct 2022 00:37:28 +0200 Subject: [PATCH] =?UTF-8?q?aout=20pop=20up=20messages=20et=20gesture=20ass?= =?UTF-8?q?oci=C3=A9=20des=20cartes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assets/images/bouton_messages.png | Bin 0 -> 3178 bytes .../assets/images/icon_messages.png | Bin 0 -> 2460 bytes Sources/dafl_project_flutter/lib/main.dart | 139 +++++++++++++++++- .../lib/views/pages/main/w_card.dart | 5 +- .../lib/views/pages/main/w_spot.dart | 108 ++------------ 5 files changed, 150 insertions(+), 102 deletions(-) create mode 100644 Sources/dafl_project_flutter/assets/images/bouton_messages.png create mode 100644 Sources/dafl_project_flutter/assets/images/icon_messages.png diff --git a/Sources/dafl_project_flutter/assets/images/bouton_messages.png b/Sources/dafl_project_flutter/assets/images/bouton_messages.png new file mode 100644 index 0000000000000000000000000000000000000000..26d68060e75a48478c7b1a02bdf3c3c2d90cc9e3 GIT binary patch literal 3178 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 QWB>pF07*qoM6N<$f(jb`TmS$7 literal 0 HcmV?d00001 diff --git a/Sources/dafl_project_flutter/assets/images/icon_messages.png b/Sources/dafl_project_flutter/assets/images/icon_messages.png new file mode 100644 index 0000000000000000000000000000000000000000..0ae98bbe4e34d56d04d69f872a880030aff5a058 GIT binary patch literal 2460 zcmV;N31jw&P)mzCRKMD&{tuW)z_Z03757!2M(*$!^Dx(OT+n_uSTpMla2TUoiNxEDA9UKw&w z+JSY;@+4!9*ZP;xQT~ALk%;XxI1Qi0b^=N}aFc}%-{1(4vE+4`D?n)n#+l-QCeJqA z#D;5(+zbGv9k`v_k5r;fE9KT51(bGp^%kpCihq|e!>#QWTL4Nsyn3TnG2WuY6m|s5 zTW_H*lHzEdH&W&8fv-FfpJDt4^%Prlr5G_tnB1ko7mX@!S7OTJeN_1~jB{;65=he- zBq8X6xboyxdHc|$JRw6$Ttt*X@fSk2$sn0Tl !hc?O+vQ6XR664+MqA6`v-k$8D zJaJ5h?N}KkEz(ov?ZZCGb_~A(U0hXATB6G9F{->Cqsr?ss=OYf%Ih&*RG##aG;kV>*jAs-wqOU`?s#&4 z(lYcC+`LbD)Mo~8b9KG5F7I7*cc&$q1=L;c3J!;67|8eB-nA(}X$R_qCjAE6FY_FV zD^T_at7V>JK3qww>qAf!MNt$*Q4~c{6h%=KMNt$*Q4~c{6s2bz)q4y}&#;wumU?7$ z5Nzo<1j@V7XBB$Pp&x6$w_ygq80=kUYV0!-DfZEBKdQIr-DdK0=rAy3K5h z?2zRtkeeSp$UnvMc?J44LUzjGHjqZn;VKZn6mEU%G_iau5lICdOK^CD1ImyRT5 zxfH|nLV5Ber+hMgNCL7>KJzLjV_A7o$QI_F=vj)m+VNPma7WH^u@)wu5;9(z3lV3q zx=2E4y0-|X*oUvAV7uoGOhEQlq#-Ndk>ip;MI`|_`MSlaSGHX28*5{eiuh=fc_9yzoAEt00#-Nr&tv3~N4{o1`yN5bYVteSxI71^9GBf@) zB5uSAUj-5`GjDdK03X#{GAWi{C zIgv&_sOOe2#DP87S|IzQ%6d zVYQ-9zeP-zdz!z?g#2S^CyUVJY08ID`Xf(A0Vf@bB-gzQ7$_#EREBmFCzmVRCu zDsK@huea~T`(JvP-FoGH@XC@#(p<7^tqekT?8(xFISZ9xU**X-cakq&rqPvUtgnm7 z0{V)e_)G6ZV--!UIK}#jW`X=hLZNGiT#gH_FJjp1%&`!1(sOJQh+AOQt0Y)2zlqg1 z$7dowrMNchdE1t0zB@N=EES(Z%fqzlJ)vCkbp*m7R(csY#Rx$%&f!wT5+vq|}P zwNEHecCD1=yp8hyYuY)e``ROR{1n?oB;U{lR2y5dz7kLJa$Ru-)mj~0*>fmw zNI!bd8qm4W#ba!sh1W5Zi>)L(@r?y6$JP;SzF3@a=P%=5p#iLqXS5yrEWj$wkn#+4 zk0KCf#P%4%tWJ{sT4;6KDJJD`$yfhsHGx|Ld8K7gDm(FHGb^)lKg7~W*mdD^sQgZy zu@rK?+QlJ@F2LB@;_4!Jw;KfY-S1ohH?SWv&lw1Zp%83}&v?9`uGhKw87QytGnOl$ zycota9zhh&`M$n9`FjzXopP&v<_xs246yIzC%(Nwn|v7Wavo*ao<7evaD z0m}In{W^nX$}NZdF=_0f7B=U@-E`;@t0#^UmL(r_GOqVEs`jX^!UsODkp(Ni%m05j@LjEaGF#t<3D%#HSd|IO3#2xO6y=xGp(Us1Th=CWUg*hgTJqir zzHni3FOl@X%9E9sMU?j_;+y7q>ohPtNybPSvTfVXQerzR|tE9Z6kq?hw@#U%$|#%n;wu1mHEb5l024BH%VO}jdzBV zp#AsK;-o1Dme%NqWhp(fh#x&Uy13~=8bj#@xN-r6vaVL?BijQ!Zk=N_-jXFv$3BEk z(v7=V&S_oU7rwPyo2#()>3~ln13DmeC(9L)iVApigDM|yVws72sFK(7rc=879SeKT zq^KXRPPhfRu9fQQ43zGH^;?M4^}TrAp? _urlImages = []; @@ -98,6 +98,9 @@ class CardProvider extends ChangeNotifier{ case CardStatus.discovery: discovery(); break; + case CardStatus.message: + message(context); + break; default: resetPosition(); } @@ -121,7 +124,8 @@ class CardProvider extends ChangeNotifier{ CardStatus? getStatus({bool force = false}) { final x = _position.dx; final y = _position.dy; - final forceDiscovery = x.abs() < 20; + final forceDiscovery = x.abs() < 80; + final forceMessage = x.abs() < 100; if(force) { final delta = 100; @@ -130,15 +134,19 @@ class CardProvider extends ChangeNotifier{ return CardStatus.like; } else if ( x <= -delta){ return CardStatus.disLike; - } else if ( y <= -delta / 2 && forceDiscovery){ + } else if ( y <= -delta/2 && forceDiscovery){ + return CardStatus.message; + } else if (y >= delta * 2 && x.abs() < 100) { return CardStatus.discovery; } } else{ final delta = 20; if(y <= -delta * 2 && forceDiscovery) { + return CardStatus.message; + } else if (y >= delta *2 && x.abs() < 80) { return CardStatus.discovery; - } else if ( x >= delta) { + }else if ( x >= delta) { return CardStatus.like; } else if ( x <= -delta) { return CardStatus.disLike; @@ -157,7 +165,7 @@ class CardProvider extends ChangeNotifier{ void discovery() { print("discovery"); _angle = 0; - _position -= Offset(0, _screenSize.height); + _position -= Offset(0, -_screenSize.height); _discovery_card(); Fluttertoast.showToast( msg: 'Ajouté', @@ -171,6 +179,122 @@ class CardProvider extends ChangeNotifier{ notifyListeners(); } + void message(context) { + print("message"); + _angle = 0; + _position -= Offset(0, _screenSize.height); + _message_card(); + showModalBottomSheet( + isDismissible: false, + useRootNavigator: true, + isScrollControlled: true, + backgroundColor: Colors.transparent, + context: context, + constraints: BoxConstraints( + maxWidth: 600, + maxHeight: double.infinity, + ), + builder: (context) => buildSheet(),); + notifyListeners(); + } + Widget buildSheet() => Container( + height: 550, + width: 350, + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.4), + offset: const Offset( + 0, + 0, + ), + blurRadius: 10.0, + spreadRadius: 2.0, + ), + BoxShadow( + color: Colors.white.withOpacity(0.3), + offset: const Offset(0.0, 0.0), + blurRadius: 0.0, + spreadRadius: 0.0, + ),//BoxShadow//BoxShadow + ], + color: Color(0xFF232123), + borderRadius: BorderRadius.only( + topRight: Radius.circular(30), + topLeft: Radius.circular(30), + ), + ), + child: Padding( + padding: EdgeInsets.fromLTRB(20, 10, 20, 10), + child: Column( + children: [ + + Container( + height: 5, + width: 130, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20), + color: Color(0xFF8A8A8A), + ), + ), + SizedBox(height: 30,), + Container( + width: double.infinity, + height: 300, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20), + color: Color(0xFF302C30), + ), + child: Padding( + padding: EdgeInsets.all(20), + child: TextField( + maxLength: 300, + style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 17, fontWeight: FontWeight.w200), + expands: true, + maxLines: null, + keyboardType: TextInputType.multiline, + decoration: InputDecoration( + hintStyle: TextStyle( + color: Colors.white, + ), + border: InputBorder.none, + hintText: "Mon message", + ), + ), + ), + ), + SizedBox(height: 20,), + SizedBox( + width: double.infinity, + height: 70, + child: ElevatedButton( + onPressed: () {}, + style: ElevatedButton.styleFrom( + primary: Color(0xFF3F1DC3), + textStyle: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(17) + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Text("Envoyer"), + Opacity(opacity: 0.2, + child: Image.asset("assets/images/send_logo.png",),) + ], + ), + ), + ) + ], + ), + ), + + ); + + void like(context) { print("like"); _angle = 20; @@ -193,6 +317,11 @@ class CardProvider extends ChangeNotifier{ resetPosition(); } + Future _message_card() async { + await Future.delayed(Duration(milliseconds: 200)); + resetPosition(); + } + } diff --git a/Sources/dafl_project_flutter/lib/views/pages/main/w_card.dart b/Sources/dafl_project_flutter/lib/views/pages/main/w_card.dart index 6a095b5..8009b40 100644 --- a/Sources/dafl_project_flutter/lib/views/pages/main/w_card.dart +++ b/Sources/dafl_project_flutter/lib/views/pages/main/w_card.dart @@ -77,6 +77,9 @@ class _CardWidgetState extends State{ case CardStatus.discovery: final child = buildStamp(image: 'assets/images/icon_discovery.png', opacity: opacity); return child; + case CardStatus.message: + final child = buildStamp(image: 'assets/images/icon_messages.png', opacity: opacity); + return child; default: return Container(); @@ -124,7 +127,7 @@ class _CardWidgetState extends State{ ..translate(-center.dx, -center.dy); return AnimatedContainer( - curve: Curves.easeInOut, + curve: Curves.easeOut, duration: Duration(milliseconds: milliseconds), transform: rotatedMatrix..translate(position.dx, position.dy), child: Stack( diff --git a/Sources/dafl_project_flutter/lib/views/pages/main/w_spot.dart b/Sources/dafl_project_flutter/lib/views/pages/main/w_spot.dart index 25923ec..8408c11 100644 --- a/Sources/dafl_project_flutter/lib/views/pages/main/w_spot.dart +++ b/Sources/dafl_project_flutter/lib/views/pages/main/w_spot.dart @@ -75,7 +75,7 @@ class _SpotsWidgetState extends State { top: height*0.68, width: width, child: Row( - mainAxisAlignment: MainAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ GestureDetector( onTap: () { @@ -90,9 +90,6 @@ class _SpotsWidgetState extends State { fit: BoxFit.cover, ), ), - SizedBox( - width: width*0.1, - ), GestureDetector( onTap: () { final provider = Provider.of(context, listen: false); @@ -105,22 +102,19 @@ class _SpotsWidgetState extends State { fit: BoxFit.cover, ), ), - SizedBox( - width: width*0.1, - ), GestureDetector( - onLongPress: (){ - showModalBottomSheet( - useRootNavigator: true, - isScrollControlled: true, - backgroundColor: Colors.transparent, - context: context, - constraints: BoxConstraints( - maxWidth: 600, - maxHeight: double.infinity, - ), - builder: (context) => buildSheet(),); + onTap: () { + final provider = Provider.of(context, listen: false); + provider.message(this.context); }, + child: Image.asset( + 'assets/images/bouton_messages.png', + height: 70, + width: 70, + fit: BoxFit.cover, + ), + ), + GestureDetector( onTap: () { final provider = Provider.of(context, listen: false); provider.like(this.context); @@ -183,84 +177,6 @@ class _SpotsWidgetState extends State { ); } - Widget buildSheet() => Container( - height: 550, - width: 330, - decoration: BoxDecoration( - color: Color(0xFF232123), - borderRadius: BorderRadius.only( - topRight: Radius.circular(30), - topLeft: Radius.circular(30), - ), - ), - child: Padding( - padding: EdgeInsets.fromLTRB(20, 10, 20, 10), - child: Column( - children: [ - - Container( - height: 5, - width: 130, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(20), - color: Color(0xFF8A8A8A), - ), - ), - SizedBox(height: 30,), - Container( - width: double.infinity, - height: 300, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(20), - color: Color(0xFF302C30), - ), - child: Padding( - padding: EdgeInsets.all(20), - child: TextField( - maxLength: 200, - style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 17, fontWeight: FontWeight.w200), - expands: true, - maxLines: null, - keyboardType: TextInputType.multiline, - decoration: InputDecoration( - hintStyle: TextStyle( - color: Colors.white, - ), - border: InputBorder.none, - hintText: "Mon message", - ), - ), - ), - ), - SizedBox(height: 20,), - SizedBox( - width: double.infinity, - height: 70, - child: ElevatedButton( - onPressed: () {}, - style: ElevatedButton.styleFrom( - primary: Color(0xFF3F1DC3), - textStyle: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(17) - )), - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Text("Envoyer"), - Opacity(opacity: 0.2, - child: Image.asset("assets/images/send_logo.png",),) - ], - ), - ), - ) - ], - ), - ), - - ); }