【发布时间】:2019-08-20 10:54:14
【问题描述】:
我有一个带有 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
),
],
),
),
);
}
}
【问题讨论】: