作过Android开发的同窗知道,Android的ListView提供addHeaderView和addFooterView两个方法用于添加View到ListView;
RecyclerView则经过定义不一样的ItemType区分HeaderViewItem和普通的ListItem,在Adapter中加上逻辑判断返回对应的ViewHolder,处理起来仍是有点麻烦的。java
推荐使用方式2,实现简单没有多余的判断逻辑处理,废话少说,直接上代码:app
class MyHomePage extends StatelessWidget { // 列表项 Widget _buildListItem(BuildContext context, int index){ return ListTile( title: Text('list tile index $index') ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Demo'), ), body: CustomScrollView( slivers: <Widget>[ // 若是不是Sliver家族的Widget,须要使用SliverToBoxAdapter作层包裹 SliverToBoxAdapter( child: Container( height: 120, color: Colors.green, child: Text('HeaderView'), ), ), // 当列表项高度固定时,使用 SliverFixedExtendList 比 SliverList 具备更高的性能 SliverFixedExtentList( delegate: SliverChildBuilderDelegate(_buildListItem, childCount: 30), itemExtent: 48.0 ) ], ), ); } }
运行效果:less