flutter - 当我开始向上滚动时,我的 sliverappbar 不会展开,它只会在我再次到达列表顶部时展开
问题描述
我有一个带有 sliverappbar 的nestedsrcollview,当我按预期向下滚动时它会缩小,但是当我向上滚动时应用程序栏不会展开,直到我到达顶部(到列表中的第一项),我知道这是在查看文档中的示例之后就不行了。它应该在您开始滚动的那一刻展开或收缩,而不是在您完成向上或向下滚动时
class App extends StatefulWidget {
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App>
with SingleTickerProviderStateMixin {
final List<Tab> myTabs = <Tab>[
Tab(
child: Container(
child: Icon(//icon),
),
),
Tab(
child: Container(
child: Icon(//icon),
),
),
Tab(
child: Container(
child: Icon(
//icon,
),
),
),
Tab(
child: Container(
child: Icon(
//icon,
),
),
),
];
final List tabChildren = [
Child1(
key: PageStorageKey<String>('1'),
),
Child2(
key: PageStorageKey<String>('2'),
),
Child3(
key: PageStorageKey<String>('3'),
),
Child4(
key: PageStorageKey<String>('4'),
),
];
@override
void initState() {
super.initState();
_tabController = TabController(vsync: this, length: myTabs.length)
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
body: NestedScrollView(
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
return <Widget>[
new SliverAppBar(
title: Text(
'Dummy text',
style: Theme.of(context)
.textTheme
.title
.copyWith(color: Colors.white),
),
pinned: true,
floating: true,
forceElevated: innerBoxIsScrolled,
bottom: TabBar(
controller: _tabController,
tabs: myTabs,
),
),
];
},
body: TabBarView(
controller: _tabController,
children: [
SafeArea(
top: false,
bottom: false,
child:
tabChildren[0], // listView
),
SafeArea(
top: false,
bottom: false,
child:
tabChildren[1], // listView
),
SafeArea(
top: false,
bottom: false,
child:
tabChildren[2], // listView
),
SafeArea(
top: false,
bottom: false,
child:
tabChildren[3], // listView
),
],
),
),
);
}
}
解决方案
设置以下属性。
snap: true,
floating: true
例子:
new SliverAppBar(
title: Text(
'Dummy text',
style: Theme.of(context)
.textTheme
.title
.copyWith(color: Colors.white),
),
floating: true,
snap: true,
forceElevated: innerBoxIsScrolled,
bottom: TabBar(
controller: _tabController,
tabs: myTabs,
),
),
推荐阅读
- python - 将数据框转换为 csv 时遇到问题
- javascript - 在不丢失属性的情况下休息参数
- javascript - 表单提交时页面重新加载,getElementById 返回 null,表单不工作
- java - 打印/导出 bootstable 数据表中的选定列
- ruby-on-rails - 在 Rails 上设计可重复确认的电子邮件
- python - 在 DataFrame 中对值进行分组
- microsoft-teams - 无法在团队范围内保存自定义应用程序选项卡
- java - 如何使用 Java SDK 使 Cloudfront 中的缓存无效
- javascript - 将类和函数分配给变量有什么意义?
- r - 识别当前在 EBImage shiny-display 中显示的帧