From 38f2b742a5021e2a1e243e40b693f64378a9cfea Mon Sep 17 00:00:00 2001 From: delanierlucas Date: Thu, 17 Nov 2022 23:50:08 +0100 Subject: [PATCH] button to sort list --- .../assets/images/alpha_sort_icon.png | Bin 0 -> 9645 bytes .../assets/images/date_sort_icon.png | Bin 0 -> 13937 bytes Sources/dafl_project_flutter/lib/main.dart | 1 + .../dafl_project_flutter/lib/model/music.dart | 10 ++- .../dafl_project_flutter/lib/model/user.dart | 20 +++-- .../lib/views/pages/main/w_discovery.dart | 85 ++++++++++++------ 6 files changed, 75 insertions(+), 41 deletions(-) create mode 100644 Sources/dafl_project_flutter/assets/images/alpha_sort_icon.png create mode 100644 Sources/dafl_project_flutter/assets/images/date_sort_icon.png diff --git a/Sources/dafl_project_flutter/assets/images/alpha_sort_icon.png b/Sources/dafl_project_flutter/assets/images/alpha_sort_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..398416aa834ef5e7f3948961a45d24f2d4af3c7f GIT binary patch literal 9645 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 We=1hm^uYgJ1*|N$Z@$UIx&H$_YN$;B literal 0 HcmV?d00001 diff --git a/Sources/dafl_project_flutter/assets/images/date_sort_icon.png b/Sources/dafl_project_flutter/assets/images/date_sort_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eb728990a8b3530c5d1bd725a7c78b3b802e01 GIT binary patch literal 13937 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 xjj^r;ebs%0k^a@oWtT8f{|CnQb;JMw literal 0 HcmV?d00001 diff --git a/Sources/dafl_project_flutter/lib/main.dart b/Sources/dafl_project_flutter/lib/main.dart index 69a4c6d..4de3350 100644 --- a/Sources/dafl_project_flutter/lib/main.dart +++ b/Sources/dafl_project_flutter/lib/main.dart @@ -223,6 +223,7 @@ class CardProvider extends ChangeNotifier { ); if (!MyApp.controller.currentUser.discovery .contains(MyApp.controller.currentUser.spots.last.music)) { + MyApp.controller.currentUser.spots.last.music.defineDate(); MyApp.controller.currentUser .addDiscovery(MyApp.controller.currentUser.spots.last.music); notifyListeners(); diff --git a/Sources/dafl_project_flutter/lib/model/music.dart b/Sources/dafl_project_flutter/lib/model/music.dart index 74bb1ab..a7db91a 100644 --- a/Sources/dafl_project_flutter/lib/model/music.dart +++ b/Sources/dafl_project_flutter/lib/model/music.dart @@ -1,11 +1,11 @@ -class Music{ +class Music { String name; String artist; String linkCover; + late DateTime date; Music(this.name, this.artist, this.linkCover); - @override bool operator ==(Object other) => identical(this, other) || @@ -16,4 +16,8 @@ class Music{ @override int get hashCode => name.hashCode ^ artist.hashCode; -} \ No newline at end of file + + void defineDate() { + this.date = new DateTime.now(); + } +} diff --git a/Sources/dafl_project_flutter/lib/model/user.dart b/Sources/dafl_project_flutter/lib/model/user.dart index ed5e5e8..88b7ecb 100644 --- a/Sources/dafl_project_flutter/lib/model/user.dart +++ b/Sources/dafl_project_flutter/lib/model/user.dart @@ -8,7 +8,7 @@ import 'music.dart'; import 'spot.dart'; Timer? timer; -int test=0; +int test = 0; class User { //attributes from DAFL @@ -19,6 +19,7 @@ class User { //attributes with Spotify API late String _id; late Track track; + bool sortChoise = true; //constructors User(this.usernameDafl, this.passwDafl) { @@ -73,7 +74,7 @@ class User { } } - void listspots (){ + void listspots() { Future? rep; int i; rep = Location.sendCurrentLocation(); @@ -81,7 +82,7 @@ class User { List> musicId = []; rep.then((String result) { List tab = result.split(","); - if (tab.isEmpty!=true) { + if (tab.isEmpty != true) { for (i = 0; i < tab.length; i++) { musicId.add(tab[i].split("-")); } @@ -97,15 +98,16 @@ class User { */ // EN COMMENTAIRE PARCE QUE ERREUR SINON VU QUE J'AI PAS MUSIC POUR L'INSTANT } - }); + }); } - void getListSpots(){ - if (test==0){ - test=1; + void getListSpots() { + if (test == 0) { + test = 1; listspots(); - }else{ - timer = Timer.periodic(const Duration(seconds: 72), (Timer t) => listspots()); + } else { + timer = + Timer.periodic(const Duration(seconds: 72), (Timer t) => listspots()); } } diff --git a/Sources/dafl_project_flutter/lib/views/pages/main/w_discovery.dart b/Sources/dafl_project_flutter/lib/views/pages/main/w_discovery.dart index 11f6032..8029274 100644 --- a/Sources/dafl_project_flutter/lib/views/pages/main/w_discovery.dart +++ b/Sources/dafl_project_flutter/lib/views/pages/main/w_discovery.dart @@ -2,6 +2,8 @@ import 'package:dafl_project_flutter/main.dart'; import 'package:fluttericon/font_awesome5_icons.dart'; import 'package:flutter/material.dart'; +import '../../../model/music.dart'; + class DiscoveryWidget extends StatefulWidget { const DiscoveryWidget({Key? key}) : super(key: key); @@ -20,25 +22,42 @@ class _DiscoveryWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( - padding: const EdgeInsets.fromLTRB(30, 0, 30, 0), + padding: const EdgeInsets.fromLTRB(30, 0, 10, 0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row(children: const [ - Text( - 'Playlist découverte', - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.w500, - fontSize: 25), - ), - Spacer(), - Icon( - FontAwesome5.sort_amount_down, - size: 30, - color: Colors.white, - ), - ]), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Playlist découverte', + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.w500, + fontSize: 25), + ), + OutlinedButton( + onPressed: () { + MyApp.controller.currentUser.sortChoise = + !MyApp.controller.currentUser.sortChoise; + setState(() {}); + }, + style: OutlinedButton.styleFrom( + shadowColor: Colors.black, + shape: CircleBorder(), + padding: EdgeInsets.all(24), + primary: Colors.grey), + child: MyApp.controller.currentUser.sortChoise + ? Image.asset( + 'assets/images/date_sort_icon.png', + height: 25, + ) + : Image.asset( + 'assets/images/alpha_sort_icon.png', + height: 25, + ), + ), + ]), const Padding(padding: EdgeInsets.fromLTRB(0, 5, 0, 0)), Text( 'Retrouvez ici vos nouvelles découvertes.', @@ -83,38 +102,46 @@ class _DiscoveryListState extends State { refreshList() async { await Future.delayed(const Duration(seconds: 1)); - setState(() { - MyApp.controller.currentUser.discovery; - }); + setState(() {}); } @override Widget build(BuildContext context) { + List listDiscovery = MyApp.controller.currentUser.discovery; + if (MyApp.controller.currentUser.sortChoise) { + listDiscovery.sort((a, b) { + return a.date.compareTo(b.date); + }); + } else { + listDiscovery.sort((a, b) { + return a.name.compareTo(b.name); + }); + } return RefreshIndicator( onRefresh: () async { refreshList(); + setState(() {}); }, key: refreshKey, child: ListView.builder( - itemCount: MyApp.controller.currentUser.discovery.length, + itemCount: listDiscovery.length, itemBuilder: (context, index) { - int itemCount = MyApp.controller.currentUser.discovery.length; + int itemCount = listDiscovery.length; int reversedIndex = itemCount - 1 - index; return Dismissible( - key: Key(MyApp - .controller.currentUser.discovery[reversedIndex].name), + movementDuration: Duration(milliseconds: 400), + key: Key(listDiscovery[index].name), confirmDismiss: (direction) async { if (direction == DismissDirection.endToStart) { + print(listDiscovery[reversedIndex].name); MyApp.controller.currentUser.discovery - .removeAt(reversedIndex); - setState(() { - itemCount -= 1; - }); - return true; + .remove(listDiscovery[reversedIndex]); + setState(() {}); } }, onDismissed: (direction) { if (direction == DismissDirection.startToEnd) { + print(listDiscovery[reversedIndex].name); print('play'); } }, @@ -184,7 +211,7 @@ class _DiscoveryListState extends State { color: Colors.white .withOpacity(0.6), fontSize: 16, - fontWeight: FontWeight.w400)) + fontWeight: FontWeight.w400)), ])) ])) ])));