flutter - Flutter SliverAppBar -- 允许滚动直到 SliverAppBar 不再可见
问题描述
我正在尝试CustomScrollView
用SliverAppBar
. 由于SliverGrid
包含主要内容的内容可能经常没有足够的内容来允许滚动经过“SliverAppBar”,因此 UI 现在感觉“卡住”;用户只能滚动到其中的一部分,SliverAppBar
但永远不能滚动到它被隐藏。
因此,我正在寻找只允许滚动直到SliverAppBar
隐藏的地方。
以下是我当前的代码,
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: CustomScrollView(
slivers: <Widget>[
SliverAppBar(
backgroundColor: Colors.green,
expandedHeight: 500.0,
flexibleSpace: FlexibleSpaceBar(
background: Image.asset(
'tree_logo.jpg',
fit: BoxFit.cover,
),
),
),
SliverGrid.count(
crossAxisCount: 4,
crossAxisSpacing: 20.0,
mainAxisSpacing: 20.0,
childAspectRatio: 4 / 3,
children: [
PermissibleModuleCard(
moduleTitle: 'Master Data',
moduleDescription:
'Edit berbagai master-master data (client, supplier, tenaga kerja & material) serta konstanta-kosntanta lainnya (PPN, Alamat, etc.)',
),
],
),
],
),
);
}
}
解决方案
查看文档后,我找到center
了CustomScrollView
. 这使我可以将 my 设置SliverList
为中心小部件。
最终代码:
class HomePage extends StatelessWidget {
final GlobalKey _sliverKey = GlobalKey();
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: CustomScrollView(
center: _sliverKey,
slivers: <Widget>[
SliverToBoxAdapter(
child: Image.asset(
'tree_logo.jpg',
fit: BoxFit.cover,
),
),
SliverGrid.count(
key: _sliverKey,
crossAxisCount: 4,
crossAxisSpacing: 20.0,
mainAxisSpacing: 20.0,
childAspectRatio: 4 / 3,
children: [
PermissibleModuleCard(
moduleTitle: 'Master Data',
moduleDescription:
'Edit berbagai master-master data (client, supplier, tenaga kerja & material) serta konstanta-kosntanta lainnya (PPN, Alamat, etc.)',
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) {
return MasterDataModulesHomePage();
}));
},
),
],
),
],
),
);
}
}
推荐阅读
- c# - 顺序命令处理程序
- java - 我需要将我的启动器活动更改为注册活动
- c++ - 在导入的静态方法上使用删除时试图理解错误
- reactjs - 如何使材料 UI 的自动完成字段成为必需?
- javascript - 如何在图表背景中放置背景图像
- java - Java Compiler 接受泛型方法引用,但在作为变量传递时不接受
- javascript - 将表单发布到不同的 Web 服务器是不好的做法?
- c# - HtmlAgilityPack 获取父节点的 id
- swift - 即使使用 objectWillChange,ObservableObject 文本也不会更新 - 多个类
- c - 如何阻止其他进程,但在其他进程被阻止时仍然能够使用函数?