gpt4 book ai didi

dart - 在 Flutter 应用程序中更改 SliverAppBar 标题颜色

转载 作者:IT老高 更新时间:2023-10-28 12:37:32 25 4
gpt4 key购买 nike

我正在使用 SliverAppBar,包括背景图片和标题。标题文本是白色的,我需要将 AppBar 上的颜色更改为黑色是“减少”(因为标签栏也是白色的)。

怎么做?

NestedScrollView(
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {;
return <Widget>[
SliverAppBar(
expandedHeight: 200.0,
floating: false,
pinned: true,
backgroundColor: Colors.white,
flexibleSpace: FlexibleSpaceBar(
centerTitle: true,
title: Text(_event.name,
style: TextStyle(
color: Colors.white,
fontSize: 16.0,
)),
background: CachedNetworkImage(
imageUrl: _event?.imageMediumUrl ??
'http://preprod.tibib-live.com/medias/cached-media/medium/5bea5964109aa-c827b05facc3781485e584dac2f4dddc.png',
fit: BoxFit.cover,
)),
),
SliverPersistentHeader(
delegate: _SliverAppBarDelegate(
TabBar(
labelColor: Colors.white,
indicatorColor: Colors.red,
unselectedLabelColor: Colors.grey,
tabs: [
Tab(icon: Icon(Icons.info), text: "Info"),
Tab(icon: Icon(Icons.people), text: "Courses"),
],
),
),
pinned: true,
),
];
},
body: TabBarView(
children: <Widget>[_buildInfo(), _buildTrials()],
),
),

最佳答案

您可以使用 ScrollController 来完成,监听滚动并将偏移量与工具栏的默认大小进行比较。我为你做了一个例子:

            class TestingNewState extends State<TestingNew> {
ScrollController _scrollController;

bool lastStatus = true;

_scrollListener() {
if (isShrink != lastStatus) {
setState(() {
lastStatus = isShrink;
});
}
}

bool get isShrink {
return _scrollController.hasClients &&
_scrollController.offset > (200 - kToolbarHeight);
}

@override
void initState() {
_scrollController = ScrollController();
_scrollController.addListener(_scrollListener);
super.initState();
}

@override
void dispose() {
_scrollController.removeListener(_scrollListener);
super.dispose();
}

@override
Widget build(BuildContext context) {
return NestedScrollView(
controller: _scrollController,
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
return <Widget>[
SliverAppBar(
expandedHeight: 200.0,
floating: false,
pinned: true,
backgroundColor: Colors.white,
flexibleSpace: FlexibleSpaceBar(
centerTitle: true,
title: Text("text sample",
style: TextStyle(
color: isShrink ? Colors.black : Colors.white,
fontSize: 16.0,
)),
background: CachedNetworkImage(
imageUrl:
'http://preprod.tibib-live.com/medias/cached-media/medium/5bea5964109aa-c827b05facc3781485e584dac2f4dddc.png',
fit: BoxFit.cover,
)),
),
];
},
body: Center(
child: Text("hello world"),
),
);
}
}

关于dart - 在 Flutter 应用程序中更改 SliverAppBar 标题颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53622598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com