CreateGroupView erstellt #28

Merged
flixcoo merged 37 commits from feature/5-creategroupview-erstellen into development 2025-11-19 17:32:44 +00:00
Owner

CreateGroupView erstellt

Zugehörige Issue(s):
#5

Beschreibung

Neue Ansicht zum Erstellen von Gruppen. Nutzer können einen Gruppennamen eingeben, Spieler suchen, auswählen und die Gruppe anschließend speichern.

Änderungen

  • CreateGroupView hinzugefügt (mit Spieler-Suche, Auswahl & Skeleton-Loading).

  • Erfolgs- und Fehlermeldungen (SnackBar, Info-/Error-Widgets).

Zusätzliche Anmerkungen

//

# CreateGroupView erstellt **Zugehörige Issue(s):** #5 ## Beschreibung Neue Ansicht zum Erstellen von Gruppen. Nutzer können einen Gruppennamen eingeben, Spieler suchen, auswählen und die Gruppe anschließend speichern. ## Änderungen - CreateGroupView hinzugefügt (mit Spieler-Suche, Auswahl & Skeleton-Loading). - Erfolgs- und Fehlermeldungen (SnackBar, Info-/Error-Widgets). ## Zusätzliche Anmerkungen //
sneeex added this to the Minimum Viable Product (MVP) milestone 2025-11-17 09:39:45 +00:00
sneeex added the
Task
Feature
Workflow
In Progress
3
Priority
Medium
3
Layer
FE
labels 2025-11-17 09:39:45 +00:00
sneeex self-assigned this 2025-11-17 09:39:45 +00:00
sneeex added 3 commits 2025-11-17 12:11:53 +00:00
flixcoo removed the
Task
Feature
Workflow
In Progress
3
Layer
FE
labels 2025-11-17 12:26:56 +00:00
sneeex added 3 commits 2025-11-17 17:24:40 +00:00
Author
Owner

todo:
//

todo: //
sneeex added 1 commit 2025-11-17 18:00:42 +00:00
flixcoo added 2 commits 2025-11-17 18:26:46 +00:00
sneeex added 1 commit 2025-11-17 19:21:30 +00:00
Author
Owner

erledigt

erledigt
sneeex added 1 commit 2025-11-17 20:19:22 +00:00
sneeex added 1 commit 2025-11-17 20:34:55 +00:00
sneeex added 1 commit 2025-11-18 16:00:14 +00:00
sneeex added 1 commit 2025-11-18 16:08:12 +00:00
sneeex added 1 commit 2025-11-18 16:29:29 +00:00
sneeex added 1 commit 2025-11-18 16:34:15 +00:00
sneeex requested review from flixcoo 2025-11-18 16:34:17 +00:00
sneeex requested review from gelbeinhalb 2025-11-18 16:34:17 +00:00
sneeex changed title from WIP: CreateGroupView erstellt to CreateGroupView erstellt 2025-11-18 16:34:22 +00:00
sneeex added the
PR
Ready for Review
2
label 2025-11-18 16:34:31 +00:00
sneeex removed the
PR
Ready for Review
2
label 2025-11-18 16:38:35 +00:00
sneeex removed review request for flixcoo 2025-11-18 16:39:10 +00:00
sneeex removed review request for gelbeinhalb 2025-11-18 16:39:11 +00:00
sneeex changed title from CreateGroupView erstellt to WIP: CreateGroupView erstellt 2025-11-18 16:39:12 +00:00
Owner

Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste)

https://pub.dev/packages/uuid

Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste) https://pub.dev/packages/uuid
Author
Owner

Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste)

https://pub.dev/packages/uuid

wäre es nicht eigentlich logischer die uuid im datenbank file zu generieren? oder was ist das problem daran? also ich meine wenn es sowieso uuids sind, die ich nicht selbst setze, dann ist doch direkt im addgroup in groupDao viel schlauer?

> Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste) > > https://pub.dev/packages/uuid wäre es nicht eigentlich logischer die uuid im datenbank file zu generieren? oder was ist das problem daran? also ich meine wenn es sowieso uuids sind, die ich nicht selbst setze, dann ist doch direkt im addgroup in groupDao viel schlauer?
Owner

Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste)

https://pub.dev/packages/uuid

wäre es nicht eigentlich logischer die uuid im datenbank file zu generieren? oder was ist das problem daran? also ich meine wenn es sowieso uuids sind, die ich nicht selbst setze, dann ist doch direkt im addgroup in groupDao viel schlauer?

Wäre es dann wiederum nicht am schlausten die in der jeweiligen Klasse zu generieren, falls keine ID übergeben wird?

> > Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste) > > > > https://pub.dev/packages/uuid > > wäre es nicht eigentlich logischer die uuid im datenbank file zu generieren? oder was ist das problem daran? also ich meine wenn es sowieso uuids sind, die ich nicht selbst setze, dann ist doch direkt im addgroup in groupDao viel schlauer? Wäre es dann wiederum nicht am schlausten die in der jeweiligen Klasse zu generieren, falls keine ID übergeben wird?
Author
Owner

Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste)

https://pub.dev/packages/uuid

wäre es nicht eigentlich logischer die uuid im datenbank file zu generieren? oder was ist das problem daran? also ich meine wenn es sowieso uuids sind, die ich nicht selbst setze, dann ist doch direkt im addgroup in groupDao viel schlauer?

Wäre es dann wiederum nicht am schlausten die in der jeweiligen Klasse zu generieren, falls keine ID übergeben wird?

ja so deep bin ich jetzt nicht drin, du meinst dann in den player group und game klassen?
weiß nicht
@gelbeinhalb deine meinung?

> > > Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste) > > > > > > https://pub.dev/packages/uuid > > > > wäre es nicht eigentlich logischer die uuid im datenbank file zu generieren? oder was ist das problem daran? also ich meine wenn es sowieso uuids sind, die ich nicht selbst setze, dann ist doch direkt im addgroup in groupDao viel schlauer? > > Wäre es dann wiederum nicht am schlausten die in der jeweiligen Klasse zu generieren, falls keine ID übergeben wird? ja so deep bin ich jetzt nicht drin, du meinst dann in den player group und game klassen? weiß nicht @gelbeinhalb deine meinung?
Author
Owner

Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste)

https://pub.dev/packages/uuid

wäre es nicht eigentlich logischer die uuid im datenbank file zu generieren? oder was ist das problem daran? also ich meine wenn es sowieso uuids sind, die ich nicht selbst setze, dann ist doch direkt im addgroup in groupDao viel schlauer?

Wäre es dann wiederum nicht am schlausten die in der jeweiligen Klasse zu generieren, falls keine ID übergeben wird?

also ich würde sie auch nicht übergebbar machen, sondern ja vielleicht einfach dann in den klassen generieren, weil das ist ja das niedrigste level was quasi geht oder?

> > > Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste) > > > > > > https://pub.dev/packages/uuid > > > > wäre es nicht eigentlich logischer die uuid im datenbank file zu generieren? oder was ist das problem daran? also ich meine wenn es sowieso uuids sind, die ich nicht selbst setze, dann ist doch direkt im addgroup in groupDao viel schlauer? > > Wäre es dann wiederum nicht am schlausten die in der jeweiligen Klasse zu generieren, falls keine ID übergeben wird? also ich würde sie auch nicht übergebbar machen, sondern ja vielleicht einfach dann in den klassen generieren, weil das ist ja das niedrigste level was quasi geht oder?
Owner

Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste)

https://pub.dev/packages/uuid

wäre es nicht eigentlich logischer die uuid im datenbank file zu generieren? oder was ist das problem daran? also ich meine wenn es sowieso uuids sind, die ich nicht selbst setze, dann ist doch direkt im addgroup in groupDao viel schlauer?

Wäre es dann wiederum nicht am schlausten die in der jeweiligen Klasse zu generieren, falls keine ID übergeben wird?

also ich würde sie auch nicht übergebbar machen, sondern ja vielleicht einfach dann in den klassen generieren, weil das ist ja das niedrigste level was quasi geht oder?

Du musst sie aber übergebbar machen, damit man aus den Infos aus der Datenbank korrekte Objekte erstellt und nicht die ID sich jedes Mal beim rausholen ändern. Du machst einfach ne Stamdard-Zuweisung in den DTOs aber trotzdem noch übergebbar für die DAO Klassen

> > > > Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste) > > > > > > > > https://pub.dev/packages/uuid > > > > > > wäre es nicht eigentlich logischer die uuid im datenbank file zu generieren? oder was ist das problem daran? also ich meine wenn es sowieso uuids sind, die ich nicht selbst setze, dann ist doch direkt im addgroup in groupDao viel schlauer? > > > > Wäre es dann wiederum nicht am schlausten die in der jeweiligen Klasse zu generieren, falls keine ID übergeben wird? > > also ich würde sie auch nicht übergebbar machen, sondern ja vielleicht einfach dann in den klassen generieren, weil das ist ja das niedrigste level was quasi geht oder? Du musst sie aber übergebbar machen, damit man aus den Infos aus der Datenbank korrekte Objekte erstellt und nicht die ID sich jedes Mal beim rausholen ändern. Du machst einfach ne Stamdard-Zuweisung in den DTOs aber trotzdem noch übergebbar für die DAO Klassen
Author
Owner

Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste)

https://pub.dev/packages/uuid

wäre es nicht eigentlich logischer die uuid im datenbank file zu generieren? oder was ist das problem daran? also ich meine wenn es sowieso uuids sind, die ich nicht selbst setze, dann ist doch direkt im addgroup in groupDao viel schlauer?

Wäre es dann wiederum nicht am schlausten die in der jeweiligen Klasse zu generieren, falls keine ID übergeben wird?

also ich würde sie auch nicht übergebbar machen, sondern ja vielleicht einfach dann in den klassen generieren, weil das ist ja das niedrigste level was quasi geht oder?

Du musst sie aber übergebbar machen, damit man aus den Infos aus der Datenbank korrekte Objekte erstellt und nicht die ID sich jedes Mal beim rausholen ändern. Du machst einfach ne Stamdard-Zuweisung in den DTOs aber trotzdem noch übergebbar für die DAO Klassen

Ja stimmt

> > > > > Mach die ID doch direkt über UUID.v4() (ist glaub ich das sinnvollste) > > > > > > > > > > https://pub.dev/packages/uuid > > > > > > > > wäre es nicht eigentlich logischer die uuid im datenbank file zu generieren? oder was ist das problem daran? also ich meine wenn es sowieso uuids sind, die ich nicht selbst setze, dann ist doch direkt im addgroup in groupDao viel schlauer? > > > > > > Wäre es dann wiederum nicht am schlausten die in der jeweiligen Klasse zu generieren, falls keine ID übergeben wird? > > > > also ich würde sie auch nicht übergebbar machen, sondern ja vielleicht einfach dann in den klassen generieren, weil das ist ja das niedrigste level was quasi geht oder? > > Du musst sie aber übergebbar machen, damit man aus den Infos aus der Datenbank korrekte Objekte erstellt und nicht die ID sich jedes Mal beim rausholen ändern. Du machst einfach ne Stamdard-Zuweisung in den DTOs aber trotzdem noch übergebbar für die DAO Klassen Ja stimmt
sneeex added 3 commits 2025-11-18 19:10:53 +00:00
flixcoo added a new dependency 2025-11-18 19:14:12 +00:00
sneeex added 1 commit 2025-11-18 19:14:23 +00:00
sneeex changed title from WIP: CreateGroupView erstellt to CreateGroupView erstellt 2025-11-18 19:14:41 +00:00
sneeex added the
PR
In Review
1
label 2025-11-18 19:14:53 +00:00
sneeex requested review from flixcoo 2025-11-18 19:14:57 +00:00
sneeex requested review from gelbeinhalb 2025-11-18 19:14:57 +00:00
sneeex added 1 commit 2025-11-18 19:37:48 +00:00
flixcoo requested changes 2025-11-18 19:43:14 +00:00
Dismissed
@@ -0,0 +28,4 @@
late Future<List<Player>> _allPlayersFuture;
late final List<Player> skeletonData = List.filled(
7,
Player(id: '0', name: 'Player 0'),
Owner

id nach #35 nicht mehr notwendig

id nach #35 nicht mehr notwendig
sneeex marked this conversation as resolved
@@ -0,0 +56,4 @@
backgroundColor: CustomTheme.backgroundColor,
scrolledUnderElevation: 0,
title: const Text(
"Create new group",
Owner

Single Quotes

Single Quotes
sneeex marked this conversation as resolved
@@ -0,0 +57,4 @@
scrolledUnderElevation: 0,
title: const Text(
"Create new group",
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
Owner

const unnötig

`const` unnötig
sneeex marked this conversation as resolved
@@ -0,0 +94,4 @@
children: [
CustomSearchBar(
controller: _searchBarController,
constraints: BoxConstraints(maxHeight: 45, minHeight: 45),
Owner

constraints: const BoxConstraints(...

`constraints: const BoxConstraints(...`
sneeex marked this conversation as resolved
@@ -0,0 +95,4 @@
CustomSearchBar(
controller: _searchBarController,
constraints: BoxConstraints(maxHeight: 45, minHeight: 45),
hintText: "Search for players",
Owner

single quotes

single quotes
sneeex marked this conversation as resolved
@@ -0,0 +115,4 @@
});
},
),
SizedBox(height: 10),
Owner

const SizedBox()

`const SizedBox()`
sneeex marked this conversation as resolved
@@ -0,0 +117,4 @@
),
SizedBox(height: 10),
Text(
"Ausgewählte Spieler: (${selectedPlayers.length})",
Owner

single quotes

single quotes
sneeex marked this conversation as resolved
@@ -0,0 +118,4 @@
SizedBox(height: 10),
Text(
"Ausgewählte Spieler: (${selectedPlayers.length})",
style: TextStyle(
Owner

const TextStyle()

`const TextStyle()`
sneeex marked this conversation as resolved
@@ -0,0 +123,4 @@
fontWeight: FontWeight.bold,
),
),
SizedBox(height: 10),
Owner

const SizedBox()

`const SizedBox()`
sneeex marked this conversation as resolved
@@ -0,0 +130,4 @@
spacing: 8.0,
runSpacing: 8.0,
children: <Widget>[
for (var selectedPlayer in selectedPlayers)
Owner

lieber var player in selectedPlayers?

lieber `var player in selectedPlayers`?
sneeex marked this conversation as resolved
@@ -0,0 +153,4 @@
),
],
),
SizedBox(height: 10),
Owner

const SizedBox()

`const SizedBox()`
sneeex marked this conversation as resolved
@@ -0,0 +155,4 @@
),
SizedBox(height: 10),
Text(
"Alle Spieler:",
Owner

single quotes

single quotes
sneeex marked this conversation as resolved
@@ -0,0 +156,4 @@
SizedBox(height: 10),
Text(
"Alle Spieler:",
style: TextStyle(
Owner

const TextStyle

`const TextStyle`
sneeex marked this conversation as resolved
@@ -0,0 +161,4 @@
fontWeight: FontWeight.bold,
),
),
SizedBox(height: 10),
Owner

const SizedBox()

`const SizedBox()`
sneeex marked this conversation as resolved
@@ -0,0 +216,4 @@
),
child:
(suggestedPlayers.isEmpty &&
!allPlayers.isEmpty)
Owner

Lieber isNotEmpty

Lieber `isNotEmpty`
sneeex marked this conversation as resolved
@@ -0,0 +264,4 @@
),
),
FullWidthButton(
text: "Create group",
Owner

single quotes

single quotes
sneeex marked this conversation as resolved
@@ -0,0 +267,4 @@
text: "Create group",
infillColor: CustomTheme.primaryColor,
borderColor: CustomTheme.primaryColor,
disabledInfillColor: CustomTheme.boxColor,
Owner

Button sieht deaktiviert aus wie ein SecondaryButton, styling anpassen. Ggf. Attribut festlegen, welches festlegt ob Button primary styling oder secondary styling hat

Button sieht deaktiviert aus wie ein SecondaryButton, styling anpassen. Ggf. Attribut festlegen, welches festlegt ob Button primary styling oder secondary styling hat
sneeex marked this conversation as resolved
@@ -0,0 +275,4 @@
: () async {
bool success = await db.groupDao.addGroup(
group: Group(
id: Uuid().v4(),
Owner

const bzw #35 reinmergen und weglassen

`const` bzw #35 reinmergen und weglassen
sneeex marked this conversation as resolved
@@ -0,0 +284,4 @@
_groupNameController.clear();
_searchBarController.clear();
selectedPlayers.clear();
Navigator.pop(context);
Owner

Bei asynchronen aufgaben mounted check

Bei asynchronen aufgaben `mounted` check
sneeex marked this conversation as resolved
@@ -0,0 +286,4 @@
selectedPlayers.clear();
Navigator.pop(context);
} else {
ScaffoldMessenger.of(context).showSnackBar(
Owner

mounted check

`mounted` check
sneeex marked this conversation as resolved
@@ -0,0 +289,4 @@
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
backgroundColor: CustomTheme.boxColor,
content: Center(
Owner

const

`const`
sneeex marked this conversation as resolved
@@ -0,0 +291,4 @@
backgroundColor: CustomTheme.boxColor,
content: Center(
child: Text(
"Error while creating group, please try again",
Owner

single quotes

single quotes
sneeex marked this conversation as resolved
@@ -0,0 +301,4 @@
setState(() {});
},
),
SizedBox(height: 20),
Owner

const

`const`
sneeex marked this conversation as resolved
@@ -0,0 +23,4 @@
constraints ?? const BoxConstraints(maxHeight: 45, minHeight: 45),
hintText: hintText,
onChanged: onChanged,
hintStyle: MaterialStateProperty.all(const TextStyle(fontSize: 16)),
Owner

MaterialStateProperty ist deprecated

`MaterialStateProperty` ist deprecated
sneeex marked this conversation as resolved
@@ -0,0 +25,4 @@
onChanged: onChanged,
hintStyle: MaterialStateProperty.all(const TextStyle(fontSize: 16)),
leading: const Icon(Icons.search),
backgroundColor: MaterialStateProperty.all(CustomTheme.boxColor),
Owner

MaterialStateProperty ist deprecated

MaterialStateProperty ist deprecated
sneeex marked this conversation as resolved
@@ -0,0 +26,4 @@
hintStyle: MaterialStateProperty.all(const TextStyle(fontSize: 16)),
leading: const Icon(Icons.search),
backgroundColor: MaterialStateProperty.all(CustomTheme.boxColor),
side: MaterialStateProperty.all(BorderSide(color: CustomTheme.boxBorder)),
Owner

MaterialStateProperty ist deprecated

MaterialStateProperty ist deprecated
sneeex marked this conversation as resolved
@@ -0,0 +27,4 @@
leading: const Icon(Icons.search),
backgroundColor: MaterialStateProperty.all(CustomTheme.boxColor),
side: MaterialStateProperty.all(BorderSide(color: CustomTheme.boxBorder)),
shape: MaterialStateProperty.all(
Owner

MaterialStateProperty ist deprecated

MaterialStateProperty ist deprecated
sneeex marked this conversation as resolved
@@ -0,0 +30,4 @@
shape: MaterialStateProperty.all(
RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
),
elevation: MaterialStateProperty.all(0),
Owner

MaterialStateProperty ist deprecated

MaterialStateProperty ist deprecated
sneeex marked this conversation as resolved
@@ -3,3 +2,3 @@
class FullWidthButton extends StatelessWidget {
const FullWidthButton({super.key, required this.text, this.onPressed});
const FullWidthButton({
Owner

Ist nicht mehr FullWidth, deswegen anderer Name oder sizeRelativeToWidth Optional

Ist nicht mehr FullWidth, deswegen anderer Name oder `sizeRelativeToWidth` Optional
sneeex marked this conversation as resolved
@@ -0,0 +1,42 @@
import 'package:flutter/material.dart';
import 'package:game_tracker/core/custom_theme.dart';
class IconListTile extends StatelessWidget {
Owner

Klassenname stimmt nicht mit Dateiname überein

Klassenname stimmt nicht mit Dateiname überein
sneeex marked this conversation as resolved
@@ -0,0 +3,4 @@
class IconListTile extends StatelessWidget {
final String text;
final IconData icon;
Owner

Falls das Icon bisher nur ein Icon ist, ggf. nur das Icon deaktivierbar machen anstatt es komplett selbst zu setzen

Falls das Icon bisher nur ein Icon ist, ggf. nur das Icon deaktivierbar machen anstatt es komplett selbst zu setzen
sneeex marked this conversation as resolved
@@ -0,0 +3,4 @@
class TextIconTile extends StatelessWidget {
final String text;
final IconData? icon;
Owner

Falls das Icon bisher nur ein Icon ist, ggf. nur das Icon deaktivierbar machen anstatt es komplett selbst zu setzen

Falls das Icon bisher nur ein Icon ist, ggf. nur das Icon deaktivierbar machen anstatt es komplett selbst zu setzen
sneeex marked this conversation as resolved
sneeex added 7 commits 2025-11-18 20:56:37 +00:00
sneeex requested review from flixcoo 2025-11-18 21:57:37 +00:00
flixcoo requested changes 2025-11-19 00:01:49 +00:00
Dismissed
@@ -0,0 +276,4 @@
name: _groupNameController.text,
members: selectedPlayers,
),
);
Owner

Füg hier folgende Zeile ein und entferne die anderen beiden ifs

if (!context.mounted) return;
Füg hier folgende Zeile ein und entferne die anderen beiden `if`s ```dart if (!context.mounted) return; ```
Author
Owner

Füg hier folgende Zeile ein und entferne die anderen beiden ifs

if (!context.mounted) return;

Aber wenn's nicht mounted ist, will ich doch trotzdem noch die Felder clearen?

> Füg hier folgende Zeile ein und entferne die anderen beiden `if`s > ```dart > if (!context.mounted) return; > ``` Aber wenn's nicht mounted ist, will ich doch trotzdem noch die Felder clearen?
Owner

Der Context ist nicht mehr verfügbar, wenn z.B. das Widget garnicht mehr im widget tree ist. Also ist das dann eh egal

Der Context ist nicht mehr verfügbar, wenn z.B. das Widget garnicht mehr im widget tree ist. Also ist das dann eh egal
sneeex marked this conversation as resolved
@@ -0,0 +7,4 @@
const CustomWidthButton({
super.key,
required this.text,
this.disabledInfillColor,
Owner

Das was aktuell der disabledButton ist sollte lieber der Secondary Button sein. Deaktivierte Buttons sollten grau sein oder sowas, also klar als deaktiviert erkennbar sein.

Das was aktuell der disabledButton ist sollte lieber der Secondary Button sein. Deaktivierte Buttons sollten grau sein oder sowas, also klar als deaktiviert erkennbar sein.
Author
Owner

Das was aktuell der disabledButton ist sollte lieber der Secondary Button sein. Deaktivierte Buttons sollten grau sein oder sowas, also klar als deaktiviert erkennbar sein.

Erläutere bitte, verstehe ich nicht

> Das was aktuell der disabledButton ist sollte lieber der Secondary Button sein. Deaktivierte Buttons sollten grau sein oder sowas, also klar als deaktiviert erkennbar sein. Erläutere bitte, verstehe ich nicht
Owner

Dein Create Game Button sieht, wenn er deaktiviert ist, viel mehr aus wie ein Secondary Button.
Orientiere dich am besten daran:

grafik.png

Dein Create Game Button sieht, wenn er deaktiviert ist, viel mehr aus wie ein Secondary Button. Orientiere dich am besten daran: ![grafik.png](/attachments/31a3b45b-b4d9-4136-9fe9-89e00596feab)
252 KiB
sneeex marked this conversation as resolved
@@ -0,0 +6,4 @@
final VoidCallback onPressed;
final bool iconEnabled;
const TextIconListTile({
Owner

grafik.png

Alignment irgendwie komisch, Abstand vom Button zum Rand viel größer als vom Namen zum rand

![grafik.png](/attachments/a1c43803-f0d1-4a01-9ab5-e2e43c651ee5) Alignment irgendwie komisch, Abstand vom Button zum Rand viel größer als vom Namen zum rand
8.6 KiB
sneeex marked this conversation as resolved
@@ -0,0 +9,4 @@
const TextIconListTile({
super.key,
required this.text,
required this.onPressed,
Owner

onPressed sollte nich required sein wenn das icon nicht immer zu sehen ist

onPressed sollte nich required sein wenn das icon nicht immer zu sehen ist
sneeex marked this conversation as resolved
Owner

Was du noch machen könntest wäre einen buttons Ordner erstellen und da den full width button und den quick create button reinzutun

Was du noch machen könntest wäre einen `buttons` Ordner erstellen und da den full width button und den quick create button reinzutun
sneeex added 3 commits 2025-11-19 15:39:37 +00:00
sneeex added 1 commit 2025-11-19 15:44:50 +00:00
sneeex added 1 commit 2025-11-19 15:48:48 +00:00
- Move `GameTile` and `DoubleRowInfoTile` to `presentation/widgets/tiles/`
- Move `CustomWidthButton` and `QuickCreateButton` to `presentation/widgets/buttons/`
- Update import paths in `HomeView`, `GroupsView`, `GameHistoryView`, and `CreateGroupView`
sneeex added 1 commit 2025-11-19 15:50:07 +00:00
flixcoo added 2 commits 2025-11-19 17:27:32 +00:00
flixcoo added 1 commit 2025-11-19 17:32:29 +00:00
flixcoo approved these changes 2025-11-19 17:32:34 +00:00
flixcoo merged commit 6f42b36587 into development 2025-11-19 17:32:44 +00:00
flixcoo deleted branch feature/5-creategroupview-erstellen 2025-11-19 17:32:44 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Depends on
#35 UUID-Generierung für Objekte
liquid-development/game-tracker
Reference: liquid-development/game-tracker#28