From e19c2e6d3ee95cfaee198bc434116471b024925f Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Thu, 23 Jun 2022 09:10:00 +0200 Subject: [PATCH] Give YaruTabbedPage index on rebuild Fixes #159 --- example/lib/pages/tabbed_page_page.dart | 9 +++++++-- lib/src/yaru_tabbed_page.dart | 12 +++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/example/lib/pages/tabbed_page_page.dart b/example/lib/pages/tabbed_page_page.dart index 6c76ef934..228033772 100644 --- a/example/lib/pages/tabbed_page_page.dart +++ b/example/lib/pages/tabbed_page_page.dart @@ -4,11 +4,16 @@ import 'package:yaru_widgets/yaru_widgets.dart'; import 'package:yaru_widgets_example/widgets/row_list.dart'; class TabbedPagePage extends StatelessWidget { - const TabbedPagePage({Key? key}) : super(key: key); + const TabbedPagePage({ + Key? key, + this.initialIndex = 0, + }) : super(key: key); + + final int initialIndex; @override Widget build(BuildContext context) { - return YaruTabbedPage(views: [ + return YaruTabbedPage(initialIndex: initialIndex, views: [ YaruPage( children: [RowList()], ), diff --git a/lib/src/yaru_tabbed_page.dart b/lib/src/yaru_tabbed_page.dart index 33ccd7ea3..05fcf1e51 100644 --- a/lib/src/yaru_tabbed_page.dart +++ b/lib/src/yaru_tabbed_page.dart @@ -17,6 +17,7 @@ class YaruTabbedPage extends StatefulWidget { right: kDefaultPagePadding, left: kDefaultPagePadding, ), + this.initialIndex = 0, }) : super(key: key); /// A list of [IconData] used inside the tabs - must have the same length as [tabTitles] and [views]. @@ -34,6 +35,8 @@ class YaruTabbedPage extends StatefulWidget { /// The padding [EdgeInsets] which defaults to [kDefaultPadding] at top, right and left. final EdgeInsets padding; + final int initialIndex; + @override State createState() => _YaruTabbedPageState(); } @@ -42,9 +45,15 @@ class _YaruTabbedPageState extends State with TickerProviderStateMixin { late TabController tabController; + int _index = 0; + @override void initState() { - tabController = TabController(length: widget.views.length, vsync: this); + tabController = TabController( + initialIndex: _index, + length: widget.views.length, + vsync: this, + ); super.initState(); } @@ -91,6 +100,7 @@ class _YaruTabbedPageState extends State color: Theme.of(context).colorScheme.onSurface.withOpacity(0.1), ), + onTap: (index) => _index = index, tabs: [ for (var i = 0; i < widget.views.length; i++) Tab(