feat: add player creation callbacks to update member and match lists when group/match creation is canceled but player created
This commit is contained in:
@@ -89,6 +89,7 @@ class _CreateGroupViewState extends State<CreateGroupView> {
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: PlayerSelection(
|
child: PlayerSelection(
|
||||||
initialSelectedPlayers: initialSelectedPlayers,
|
initialSelectedPlayers: initialSelectedPlayers,
|
||||||
|
onPlayerCreated: () => widget.onMembersChanged?.call(),
|
||||||
onChanged: (value) {
|
onChanged: (value) {
|
||||||
setState(() {
|
setState(() {
|
||||||
selectedPlayers = [...value];
|
selectedPlayers = [...value];
|
||||||
@@ -134,6 +135,7 @@ class _CreateGroupViewState extends State<CreateGroupView> {
|
|||||||
if (!mounted) return;
|
if (!mounted) return;
|
||||||
|
|
||||||
if (success) {
|
if (success) {
|
||||||
|
widget.onMembersChanged?.call();
|
||||||
await HapticFeedback.successNotification();
|
await HapticFeedback.successNotification();
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
Navigator.pop(context, updatedGroup);
|
Navigator.pop(context, updatedGroup);
|
||||||
@@ -157,7 +159,6 @@ class _CreateGroupViewState extends State<CreateGroupView> {
|
|||||||
final success = await db.groupDao.addGroup(
|
final success = await db.groupDao.addGroup(
|
||||||
group: Group(name: groupName, members: selectedPlayers),
|
group: Group(name: groupName, members: selectedPlayers),
|
||||||
);
|
);
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -107,13 +107,10 @@ class _GroupViewState extends State<GroupView> {
|
|||||||
context,
|
context,
|
||||||
adaptivePageRoute(
|
adaptivePageRoute(
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return const CreateGroupView();
|
return CreateGroupView(onMembersChanged: loadGroups);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
setState(() {
|
|
||||||
loadGroups();
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -196,6 +196,7 @@ class _CreateMatchViewState extends State<CreateMatchView> {
|
|||||||
child: PlayerSelection(
|
child: PlayerSelection(
|
||||||
key: ValueKey(selectedGroup?.id ?? 'no_group'),
|
key: ValueKey(selectedGroup?.id ?? 'no_group'),
|
||||||
initialSelectedPlayers: selectedPlayers,
|
initialSelectedPlayers: selectedPlayers,
|
||||||
|
onPlayerCreated: () => widget.onMatchesUpdated?.call(),
|
||||||
onChanged: (value) {
|
onChanged: (value) {
|
||||||
setState(() {
|
setState(() {
|
||||||
selectedPlayers = value;
|
selectedPlayers = value;
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ class PlayerSelection extends StatefulWidget {
|
|||||||
this.availablePlayers,
|
this.availablePlayers,
|
||||||
this.initialSelectedPlayers,
|
this.initialSelectedPlayers,
|
||||||
required this.onChanged,
|
required this.onChanged,
|
||||||
|
this.onPlayerCreated,
|
||||||
});
|
});
|
||||||
|
|
||||||
/// An optional list of players to choose from. If null, all players from the database are used.
|
/// An optional list of players to choose from. If null, all players from the database are used.
|
||||||
@@ -37,6 +38,9 @@ class PlayerSelection extends StatefulWidget {
|
|||||||
/// A callback function that is invoked whenever the selection changes,
|
/// A callback function that is invoked whenever the selection changes,
|
||||||
final Function(List<Player> value) onChanged;
|
final Function(List<Player> value) onChanged;
|
||||||
|
|
||||||
|
/// A callback function that is invoked when a player was created in this widget
|
||||||
|
final VoidCallback? onPlayerCreated;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<PlayerSelection> createState() => _PlayerSelectionState();
|
State<PlayerSelection> createState() => _PlayerSelectionState();
|
||||||
}
|
}
|
||||||
@@ -323,6 +327,7 @@ class _PlayerSelectionState extends State<PlayerSelection> {
|
|||||||
|
|
||||||
/// Updates the state after successfully adding a new player.
|
/// Updates the state after successfully adding a new player.
|
||||||
void _handleSuccessfulPlayerCreation(Player player) {
|
void _handleSuccessfulPlayerCreation(Player player) {
|
||||||
|
widget.onPlayerCreated?.call();
|
||||||
selectedPlayers.insert(0, player);
|
selectedPlayers.insert(0, player);
|
||||||
widget.onChanged([...selectedPlayers]);
|
widget.onChanged([...selectedPlayers]);
|
||||||
allPlayers.add(player);
|
allPlayers.add(player);
|
||||||
|
|||||||
Reference in New Issue
Block a user