From b8b67380c1dcb4d0b56e771c04b246b97439786e Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Mon, 20 Mar 2023 20:09:17 +0100 Subject: [PATCH] Adding reordering on game creation --- .../lib/widgets/ingame_widgets.dart | 35 ++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/Sources/bowlin_project/lib/widgets/ingame_widgets.dart b/Sources/bowlin_project/lib/widgets/ingame_widgets.dart index 2ebdfb6..8b9cf57 100644 --- a/Sources/bowlin_project/lib/widgets/ingame_widgets.dart +++ b/Sources/bowlin_project/lib/widgets/ingame_widgets.dart @@ -266,10 +266,22 @@ class _InGameCardConfigState extends State { void onDelete(Player p){ setState(() { + widget.listPlayer.remove(p); }); } + void onReorder(int oldIndex, int newIndex){ + setState(() { + + if (oldIndex < newIndex) { + newIndex -= 1; + } + final Player item = widget.listPlayer.removeAt(oldIndex); + widget.listPlayer.insert(newIndex, item); + }); + } + @override Widget build(BuildContext context) { return Container( @@ -313,7 +325,7 @@ class _InGameCardConfigState extends State { ], ), )), - ListUserInGame(listPlayer: widget.listPlayer, onDelete: onDelete), + ListUserInGame(listPlayer: widget.listPlayer, onDelete: onDelete, onReorder: onReorder,), Spacer(), Image( image: AssetImage("assets/images/start_sentence.png"), @@ -354,7 +366,8 @@ class _InGameCardConfigState extends State { class ListUserInGame extends StatefulWidget { final List listPlayer; final Function(Player) onDelete; - const ListUserInGame({Key? key, required this.listPlayer, required this.onDelete}) : super(key: key); + final Function(int, int) onReorder; + const ListUserInGame({Key? key, required this.listPlayer, required this.onDelete, required this.onReorder}) : super(key: key); @override State createState() => _ListUserInGameState(); @@ -373,11 +386,13 @@ class _ListUserInGameState extends State { constraints: new BoxConstraints( maxHeight: 170, ), - child: ListView.builder( - itemCount: widget.listPlayer.length, + child: ReorderableListView.builder( + itemCount: widget.listPlayer.length, itemBuilder: (context, index) { - return UserInGame(player: widget.listPlayer[index], onDelete: widget.onDelete); - }), + return UserInGame(key:ValueKey(widget.listPlayer[index]) ,player: widget.listPlayer[index], onDelete: widget.onDelete, index: index); + }, + onReorder: widget.onReorder, + ), ), RichText( text: TextSpan( @@ -402,7 +417,8 @@ class _ListUserInGameState extends State { class UserInGame extends StatefulWidget { final Player player; final Function(Player) onDelete; - const UserInGame({Key? key, required this.player, required this.onDelete}) : super(key: key); + final int index; + const UserInGame({Key? key, required this.player, required this.onDelete, required this.index}) : super(key: key); @override State createState() => _UserInGameState(); @@ -425,7 +441,9 @@ class _UserInGameState extends State { ), child: Row( children: [ - Container( + ReorderableDragStartListener( + index: widget.index, + child : Container( width: 30, height: 30, decoration: BoxDecoration( @@ -434,6 +452,7 @@ class _UserInGameState extends State { image: AssetImage(widget.player.image), fit: BoxFit.cover), ), ), + ), SizedBox( width: 10, ),