From 156c6614bf2eb566bd6fd2e40802b00695a29d87 Mon Sep 17 00:00:00 2001 From: codiss Date: Thu, 23 Feb 2023 10:46:11 +0800 Subject: [PATCH] Fix Material3 TabBarTheme.dividerColor not working (#119690) * Fixed Material3 TabBarTheme.dividerColor not working * Add 'Material3 - TabBar inherits the dividerColor of TabBarTheme' test --------- Co-authored-by: Kate Lovett --- packages/flutter/lib/src/material/tabs.dart | 2 +- packages/flutter/test/material/tabs_test.dart | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/packages/flutter/lib/src/material/tabs.dart b/packages/flutter/lib/src/material/tabs.dart index c488a4ee753..8a8c1989515 100644 --- a/packages/flutter/lib/src/material/tabs.dart +++ b/packages/flutter/lib/src/material/tabs.dart @@ -1122,7 +1122,7 @@ class _TabBarState extends State { indicatorPadding: widget.indicatorPadding, tabKeys: _tabKeys, old: _indicatorPainter, - dividerColor: theme.useMaterial3 ? widget.dividerColor ?? defaults.dividerColor : null, + dividerColor: theme.useMaterial3 ? widget.dividerColor ?? tabBarTheme.dividerColor ?? defaults.dividerColor : null, labelPaddings: _labelPaddings, ); } diff --git a/packages/flutter/test/material/tabs_test.dart b/packages/flutter/test/material/tabs_test.dart index e3689cd8c0a..ce47d897ab9 100644 --- a/packages/flutter/test/material/tabs_test.dart +++ b/packages/flutter/test/material/tabs_test.dart @@ -5614,6 +5614,36 @@ void main() { labelColor.withAlpha(0xB2) // 70% alpha, ); }); + + testWidgets('Material3 - TabBar inherits the dividerColor of TabBarTheme', (WidgetTester tester) async { + const Color dividerColor = Colors.yellow; + + await tester.pumpWidget( + MaterialApp( + theme: ThemeData( + useMaterial3: true, + tabBarTheme: const TabBarTheme(dividerColor: dividerColor), + ), + home: Scaffold( + appBar: AppBar( + bottom: TabBar( + controller: TabController(length: 3, vsync: const TestVSync()), + tabs: const [ + Tab(text: 'Tab 1'), + Tab(text: 'Tab 2'), + Tab(text: 'Tab 3'), + ], + ), + ), + ), + ), + ); + + // Test painter's divider color. + final CustomPaint paint = tester.widget(find.byType(CustomPaint).last); + // ignore: avoid_dynamic_calls + expect((paint.painter as dynamic).dividerColor, dividerColor); + }); }); }