Updated choosing mechanism
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m5s
Pull Request Pipeline / lint (pull_request) Successful in 2m9s

This commit is contained in:
2025-12-06 17:13:33 +01:00
parent 75b62d0854
commit 10aad47124
3 changed files with 67 additions and 40 deletions

View File

@@ -35,42 +35,50 @@ class _ChooseGameViewState extends State<ChooseGameView> {
appBar: AppBar( appBar: AppBar(
backgroundColor: CustomTheme.backgroundColor, backgroundColor: CustomTheme.backgroundColor,
scrolledUnderElevation: 0, scrolledUnderElevation: 0,
leading: IconButton(
icon: const Icon(Icons.arrow_back_ios),
onPressed: () {
Navigator.of(
context,
).pop(selectedGameIndex == -1 ? null : selectedGameIndex);
},
),
title: const Text( title: const Text(
'Choose Game', 'Choose Game',
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
), ),
centerTitle: true, centerTitle: true,
), ),
body: Column( body: Container(
children: [ decoration: CustomTheme.standardBoxDecoration,
CustomSearchBar( padding: const EdgeInsets.all(10),
controller: searchBarController, child: Column(
hintText: 'Game Name', children: [
), CustomSearchBar(
const SizedBox(height: 5), controller: searchBarController,
Expanded( hintText: 'Game Name',
child: ListView.builder(
itemCount: widget.games.length,
itemBuilder: (BuildContext context, int index) {
return TitleDescriptionListTile(
title: widget.games[index].$1,
description: widget.games[index].$2,
badgeText: translateRulesetToString(widget.games[index].$3),
isHighlighted: selectedGameIndex == index,
onPressed: () async {
setState(() {
selectedGameIndex = index;
});
Future.delayed(const Duration(milliseconds: 500), () {
if (!context.mounted) return;
Navigator.of(context).pop(selectedGameIndex);
});
},
);
},
), ),
), const SizedBox(height: 5),
], Expanded(
child: ListView.builder(
itemCount: widget.games.length,
itemBuilder: (BuildContext context, int index) {
return TitleDescriptionListTile(
title: widget.games[index].$1,
description: widget.games[index].$2,
badgeText: translateRulesetToString(widget.games[index].$3),
isHighlighted: selectedGameIndex == index,
onPressed: () async {
setState(() {
selectedGameIndex = index;
});
},
);
},
),
),
],
),
), ),
); );
} }

View File

@@ -33,6 +33,16 @@ class _ChooseGroupViewState extends State<ChooseGroupView> {
appBar: AppBar( appBar: AppBar(
backgroundColor: CustomTheme.backgroundColor, backgroundColor: CustomTheme.backgroundColor,
scrolledUnderElevation: 0, scrolledUnderElevation: 0,
leading: IconButton(
icon: const Icon(Icons.arrow_back_ios),
onPressed: () {
Navigator.of(context).pop(
selectedGroupIndex == -1
? null
: widget.groups[selectedGroupIndex],
);
},
),
title: const Text( title: const Text(
'Choose Group', 'Choose Group',
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
@@ -46,12 +56,11 @@ class _ChooseGroupViewState extends State<ChooseGroupView> {
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
setState(() { setState(() {
selectedGroupIndex = index; if (selectedGroupIndex == index) {
}); selectedGroupIndex = -1;
} else {
Future.delayed(const Duration(milliseconds: 500), () { selectedGroupIndex = index;
if (!context.mounted) return; }
Navigator.of(context).pop(widget.groups[index]);
}); });
}, },
child: GroupTile( child: GroupTile(

View File

@@ -36,6 +36,16 @@ class _ChooseRulesetViewState extends State<ChooseRulesetView> {
appBar: AppBar( appBar: AppBar(
backgroundColor: CustomTheme.backgroundColor, backgroundColor: CustomTheme.backgroundColor,
scrolledUnderElevation: 0, scrolledUnderElevation: 0,
leading: IconButton(
icon: const Icon(Icons.arrow_back_ios),
onPressed: () {
Navigator.of(context).pop(
selectedRulesetIndex == -1
? null
: widget.rulesets[selectedRulesetIndex].$1,
);
},
),
title: const Text( title: const Text(
'Choose Ruleset', 'Choose Ruleset',
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
@@ -49,11 +59,11 @@ class _ChooseRulesetViewState extends State<ChooseRulesetView> {
return TitleDescriptionListTile( return TitleDescriptionListTile(
onPressed: () async { onPressed: () async {
setState(() { setState(() {
selectedRulesetIndex = index; if (selectedRulesetIndex == index) {
}); selectedRulesetIndex = -1;
Future.delayed(const Duration(milliseconds: 500), () { } else {
if (!context.mounted) return; selectedRulesetIndex = index;
Navigator.of(context).pop(widget.rulesets[index].$1); }
}); });
}, },
title: widget.rulesets[index].$2, title: widget.rulesets[index].$2,