|
|
|
|
@@ -49,8 +49,7 @@ class _CreateGroupViewState extends State<CreateGroupView> {
|
|
|
|
|
@override
|
|
|
|
|
void dispose() {
|
|
|
|
|
_groupNameController.dispose();
|
|
|
|
|
_searchBarController
|
|
|
|
|
.dispose(); // Listener entfernen und Controller aufräumen
|
|
|
|
|
_searchBarController.dispose();
|
|
|
|
|
super.dispose();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -67,8 +66,7 @@ class _CreateGroupViewState extends State<CreateGroupView> {
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
return SafeArea(
|
|
|
|
|
child: Scaffold(
|
|
|
|
|
return Scaffold(
|
|
|
|
|
backgroundColor: CustomTheme.backgroundColor,
|
|
|
|
|
appBar: AppBar(
|
|
|
|
|
backgroundColor: CustomTheme.backgroundColor,
|
|
|
|
|
@@ -79,7 +77,8 @@ class _CreateGroupViewState extends State<CreateGroupView> {
|
|
|
|
|
),
|
|
|
|
|
centerTitle: true,
|
|
|
|
|
),
|
|
|
|
|
body: Column(
|
|
|
|
|
body: SafeArea(
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
children: [
|
|
|
|
|
Container(
|
|
|
|
|
@@ -123,12 +122,7 @@ class _CreateGroupViewState extends State<CreateGroupView> {
|
|
|
|
|
.trim()
|
|
|
|
|
.isNotEmpty,
|
|
|
|
|
onTrailingButtonPressed: () async {
|
|
|
|
|
addNewPlayerFromSearch(
|
|
|
|
|
context: context,
|
|
|
|
|
searchBarController: _searchBarController,
|
|
|
|
|
db: db,
|
|
|
|
|
loadPlayerList: loadPlayerList,
|
|
|
|
|
);
|
|
|
|
|
addNewPlayerFromSearch(context: context);
|
|
|
|
|
},
|
|
|
|
|
onChanged: (value) {
|
|
|
|
|
setState(() {
|
|
|
|
|
@@ -339,25 +333,24 @@ class _CreateGroupViewState extends State<CreateGroupView> {
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Adds a new player to the database from the search bar input.
|
|
|
|
|
/// Shows a snackbar indicating success or failure.
|
|
|
|
|
/// [context] - BuildContext to show the snackbar.
|
|
|
|
|
/// [searchBarController] - TextEditingController of the search bar.
|
|
|
|
|
/// [db] - AppDatabase instance to interact with the database.
|
|
|
|
|
/// [loadPlayerList] - Function to reload the player list after adding.
|
|
|
|
|
void addNewPlayerFromSearch({
|
|
|
|
|
required BuildContext context,
|
|
|
|
|
required TextEditingController searchBarController,
|
|
|
|
|
required AppDatabase db,
|
|
|
|
|
required Function loadPlayerList,
|
|
|
|
|
}) async {
|
|
|
|
|
String playerName = searchBarController.text.trim();
|
|
|
|
|
bool success = await db.playerDao.addPlayer(player: Player(name: playerName));
|
|
|
|
|
/// Adds a new player to the database from the search bar input.
|
|
|
|
|
/// Shows a snackbar indicating success or failure.
|
|
|
|
|
/// [context] - BuildContext to show the snackbar.
|
|
|
|
|
void addNewPlayerFromSearch({required BuildContext context}) async {
|
|
|
|
|
String playerName = _searchBarController.text.trim();
|
|
|
|
|
Player createdPlayer = Player(name: playerName);
|
|
|
|
|
bool success = await db.playerDao.addPlayer(player: createdPlayer);
|
|
|
|
|
if (!context.mounted) return;
|
|
|
|
|
if (success) {
|
|
|
|
|
loadPlayerList();
|
|
|
|
|
selectedPlayers.add(createdPlayer);
|
|
|
|
|
allPlayers.add(createdPlayer);
|
|
|
|
|
setState(() {
|
|
|
|
|
_searchBarController.clear();
|
|
|
|
|
suggestedPlayers = allPlayers.where((player) {
|
|
|
|
|
return !selectedPlayers.contains(player);
|
|
|
|
|
}).toList();
|
|
|
|
|
});
|
|
|
|
|
ScaffoldMessenger.of(context).showSnackBar(
|
|
|
|
|
SnackBar(
|
|
|
|
|
backgroundColor: CustomTheme.boxColor,
|
|
|
|
|
@@ -369,7 +362,6 @@ void addNewPlayerFromSearch({
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
searchBarController.clear();
|
|
|
|
|
} else {
|
|
|
|
|
ScaffoldMessenger.of(context).showSnackBar(
|
|
|
|
|
SnackBar(
|
|
|
|
|
@@ -383,4 +375,5 @@ void addNewPlayerFromSearch({
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|