Respect the tabIndex param when on WonderDetails screen

This commit is contained in:
Shawn 2024-01-11 10:11:03 -07:00
parent 3ce1d3a68d
commit 00e3dcc234

View File

@ -8,9 +8,9 @@ import 'package:wonders/ui/screens/wonder_details/wonder_details_tab_menu.dart';
import 'package:wonders/ui/screens/wonder_events/wonder_events.dart'; import 'package:wonders/ui/screens/wonder_events/wonder_events.dart';
class WonderDetailsScreen extends StatefulWidget with GetItStatefulWidgetMixin { class WonderDetailsScreen extends StatefulWidget with GetItStatefulWidgetMixin {
WonderDetailsScreen({Key? key, required this.type, this.initialTabIndex = 0}) : super(key: key); WonderDetailsScreen({Key? key, required this.type, this.tabIndex = 0}) : super(key: key);
final WonderType type; final WonderType type;
final int initialTabIndex; final int tabIndex;
@override @override
State<WonderDetailsScreen> createState() => _WonderDetailsScreenState(); State<WonderDetailsScreen> createState() => _WonderDetailsScreenState();
@ -21,13 +21,21 @@ class _WonderDetailsScreenState extends State<WonderDetailsScreen>
late final _tabController = TabController( late final _tabController = TabController(
length: 4, length: 4,
vsync: this, vsync: this,
initialIndex: widget.initialTabIndex, initialIndex: widget.tabIndex,
)..addListener(_handleTabChanged); )..addListener(_handleTabChanged);
AnimationController? _fade; AnimationController? _fade;
double? _tabBarSize; double? _tabBarSize;
bool _useNavRail = false; bool _useNavRail = false;
@override
void didUpdateWidget(covariant WonderDetailsScreen oldWidget) {
if (oldWidget.tabIndex != widget.tabIndex) {
_tabController.index = widget.tabIndex;
}
super.didUpdateWidget(oldWidget);
}
@override @override
void dispose() { void dispose() {
_tabController.dispose(); _tabController.dispose();
@ -35,6 +43,7 @@ class _WonderDetailsScreenState extends State<WonderDetailsScreen>
} }
void _handleTabChanged() { void _handleTabChanged() {
context.go(ScreenPaths.wonderDetails(widget.type, tabIndex: _tabController.index));
_fade?.forward(from: 0); _fade?.forward(from: 0);
setState(() {}); setState(() {});
} }