android - 是否有一个 AppBar 完全动态的高度和背景颜色?
问题描述
我正在尝试做一个动态的应用栏,当页面的滚动偏移量为0时,背景颜色需要透明,标志需要是白色和标高0,并且当滚动偏移量从0改变时,需要过渡以将背景颜色更改为白色,高度为 5,徽标颜色为红色
我已经尝试过这段代码:
@override
void initState() {
super.initState();
_scrollController = ScrollController()
..addListener(() {
setState(() {
offset = _scrollController.offset;
});
});
}
...
final double transitionColor = min(max(offset, 0), 100) / 100;
final double transitionElevation = min(max(offset, 0), 50) / 10;
LjAppBar.getAppBar(
brandingColor: offset != 0 ? LjTheme.ljPrimary.withOpacity(transitionColor) : Colors.white,
backgroundColor: Colors.white.withOpacity(transitionColor),
elevation: transitionElevation,
),
但是,效果和应用程序是如此缓慢并且效果不佳......我希望有人可以帮助我
解决方案
据我所知,解决这个问题的唯一方法是使用SliverAppBar。Flutter 中的 Sliver 是可以动态响应不同滚动状态的小部件。查看Slivers,从 Flutter 团队的 Emily Fortuna 那里获得关于该主题的精彩介绍。
在您的情况下,使用 SliverAppBar,您可以根据列表的滚动来更改应用栏的颜色、高度等。为此,您将需要SliverList。
围绕 Sliver 小部件有点难以理解,但不要气馁!一旦你习惯了它们,你将能够实现你想要的。
推荐阅读
- xamarin.android - 如何在 Xamarin.Android 中创建视图
- python - 使用 python 从 Flickr 下载给定 ID 的照片统计信息
- php - 如何在没有身份验证默认值的情况下实现身份验证防护
- c# - 我将如何优化这个 if 语句
- angular - 传单折线和多边形绘图无法正常工作
- c++ - type_traits 中检查类型是否为 const char* 的函数是什么?
- javascript - JQuery AJAX url 调用 - 有时不起作用
- php - 查询具有关系的模型字段
- azure - 如何通过命令行将 Azure 服务主体详细信息传递给 Ansible?
- javascript - 如何通过 Web 应用程序的跨浏览器播放 .h264(例如:globalwarming.h264)视频文件