Skip to content

Commit 70b65e8

Browse files
committed
Fix backpack, action, craft UI update issues
The backpack, action, and craft UI now refresh correctly when the player's state changes. This was achieved by adding listeners to the player and refreshing the UI when changes are detected.
1 parent 51adfd0 commit 70b65e8

File tree

4 files changed

+36
-4
lines changed

4 files changed

+36
-4
lines changed

escape_wild/lib/design/adaptive_navigation.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,14 @@ class AdaptiveNavigationScaffold extends StatelessWidget {
8383

8484
int getSelectedIndex(BuildContext context, List<AdaptiveNavigationItem> items) {
8585
final location = GoRouterState.of(context).uri.toString();
86-
return max(0, items.indexWhere((item) => location.startsWith(item.route)));
86+
return max(0, items.indexWhere((item) => location.endsWith(item.route)));
8787
}
8888

8989
void onItemTapped(int index, List<AdaptiveNavigationItem> items) {
9090
final item = items[index];
9191
final branchIndex = navigationShell.route.routes.indexWhere((r) {
9292
if (r is GoRoute) {
93-
return r.path.startsWith(item.route);
93+
return r.path.endsWith(item.route);
9494
}
9595
return false;
9696
});

escape_wild/lib/ui/game/action/action.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,22 @@ class GameActionPage extends StatefulWidget {
1818
}
1919

2020
class _GameActionPageState extends State<GameActionPage> {
21+
@override
22+
void initState() {
23+
super.initState();
24+
player.addListener(refresh);
25+
}
26+
27+
@override
28+
void dispose() {
29+
player.removeListener(refresh);
30+
super.dispose();
31+
}
32+
33+
void refresh() {
34+
setState(() {});
35+
}
36+
2137
@override
2238
Widget build(BuildContext context) {
2339
final actions = player.getAvailableActions();

escape_wild/lib/ui/game/backpack/backpack.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class _GameBackpackPageState extends State<GameBackpackPage> {
4242
@override
4343
void initState() {
4444
super.initState();
45-
player.addListener(updateDefaultSelection);
45+
player.addListener(refresh);
4646
if (lastSelectedIndex >= 0) {
4747
selected = player.backpack[lastSelectedIndex];
4848
}
@@ -51,10 +51,15 @@ class _GameBackpackPageState extends State<GameBackpackPage> {
5151

5252
@override
5353
void dispose() {
54-
player.removeListener(updateDefaultSelection);
54+
player.removeListener(refresh);
5555
super.dispose();
5656
}
5757

58+
void refresh() {
59+
updateDefaultSelection();
60+
setState(() {});
61+
}
62+
5863
void updateDefaultSelection() {
5964
if (selected.isEmpty && player.backpack.isNotEmpty) {
6065
selected = player.backpack.firstOrEmpty;

escape_wild/lib/ui/game/craft/craft.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,17 @@ class _GameCraftPageState extends State<GameCraftPage> {
3434
super.initState();
3535
cat2Recipes = Contents.craftRecipes.cat2Recipes.entries.toList();
3636
selectedCatIndex = lastSelectedIndex.clamp(0, cat2Recipes.length - 1);
37+
player.addListener(refresh);
38+
setState(() {});
39+
}
40+
41+
@override
42+
void dispose() {
43+
player.removeListener(refresh);
44+
super.dispose();
45+
}
46+
47+
void refresh() {
3748
setState(() {});
3849
}
3950

0 commit comments

Comments
 (0)