From 5fea5fc017fb96d2273cdd556cb70e7d60c8cd6d Mon Sep 17 00:00:00 2001 From: Shawn Date: Wed, 17 Jan 2024 11:55:37 -0700 Subject: [PATCH] Protect details screen from bad tabIndex params --- lib/ui/screens/wonder_details/wonders_details_screen.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/ui/screens/wonder_details/wonders_details_screen.dart b/lib/ui/screens/wonder_details/wonders_details_screen.dart index aac6f0b2..d885bb99 100644 --- a/lib/ui/screens/wonder_details/wonders_details_screen.dart +++ b/lib/ui/screens/wonder_details/wonders_details_screen.dart @@ -21,7 +21,7 @@ class _WonderDetailsScreenState extends State late final _tabController = TabController( length: 4, vsync: this, - initialIndex: widget.tabIndex, + initialIndex: _clampIndex(widget.tabIndex), )..addListener(_handleTabChanged); AnimationController? _fade; @@ -31,7 +31,7 @@ class _WonderDetailsScreenState extends State @override void didUpdateWidget(covariant WonderDetailsScreen oldWidget) { if (oldWidget.tabIndex != widget.tabIndex) { - _tabController.index = widget.tabIndex; + _tabController.index = _clampIndex(widget.tabIndex); } super.didUpdateWidget(oldWidget); } @@ -42,6 +42,8 @@ class _WonderDetailsScreenState extends State super.dispose(); } + int _clampIndex(int index) => index.clamp(0, 3); + void _handleTabChanged() { _fade?.forward(from: 0); setState(() {});