Improve TabBar

This commit is contained in:
2024-12-09 20:07:08 +08:00
parent 4e121748cd
commit 659b211038

View File

@@ -201,8 +201,7 @@ class _MySliverAppBarDelegate extends SliverPersistentHeaderDelegate {
), ),
Expanded( Expanded(
child: DefaultTextStyle( child: DefaultTextStyle(
style: style: DefaultTextStyle.of(context).style.copyWith(fontSize: 20),
DefaultTextStyle.of(context).style.copyWith(fontSize: 20),
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
child: title, child: title,
@@ -215,7 +214,7 @@ class _MySliverAppBarDelegate extends SliverPersistentHeaderDelegate {
], ],
).paddingTop(topPadding); ).paddingTop(topPadding);
if(style == AppbarStyle.blur) { if (style == AppbarStyle.blur) {
return SizedBox.expand( return SizedBox.expand(
child: BlurEffect( child: BlurEffect(
blur: 15, blur: 15,
@@ -281,9 +280,7 @@ class _FilledTabBarState extends State<FilledTabBar> {
_IndicatorPainter? painter; _IndicatorPainter? painter;
var scrollController = ScrollController( var scrollController = ScrollController();
keepScrollOffset: false
);
var tabBarKey = GlobalKey(); var tabBarKey = GlobalKey();
@@ -305,15 +302,16 @@ class _FilledTabBarState extends State<FilledTabBar> {
@override @override
void didChangeDependencies() { void didChangeDependencies() {
_controller = widget.controller ?? DefaultTabController.of(context); _controller = widget.controller ?? DefaultTabController.of(context);
_controller.animation!.addListener(onTabChanged);
initPainter(); initPainter();
super.didChangeDependencies(); super.didChangeDependencies();
var prevIndex = bucket.readState(context) as int?; var prevIndex = bucket.readState(context) as int?;
if (prevIndex != null && prevIndex != _controller.index) { if (prevIndex != null &&
Future.microtask(() { prevIndex != _controller.index &&
prevIndex >= 0 &&
prevIndex < widget.tabs.length) {
_controller.index = prevIndex; _controller.index = prevIndex;
});
} }
_controller.animation!.addListener(onTabChanged);
} }
@override @override
@@ -357,6 +355,7 @@ class _FilledTabBarState extends State<FilledTabBar> {
controller: scrollController, controller: scrollController,
builder: (context, controller, physics) { builder: (context, controller, physics) {
return SingleChildScrollView( return SingleChildScrollView(
key: const PageStorageKey('scroll'),
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
controller: controller, controller: controller,