Flutter Sliver组件全解

一、初试Sliver 1.1 使用Sliver制作一个ListView ​ ListView的底层原理就是Sliver,我们可以用CustomScrollView先做出一个视窗(所谓视窗就是里面的内容比边框大),在其中使用SliverChildBuilderDelegate,而事实上,这也正是ListViewBuilder的底层做法。 CustomScrollView( //定义一个视窗 slivers: [ SliverList(delegate: SliverChildBuilderDelegate((context, index) { return Container( height: 200, color: Colors.primaries[index%Colors.primaries.length], ); })) ], ) 1.2 更加灵活的ListView——加入任意Widget ​ 而使用Sliver,我们就可以实现更加灵活的功能,例如在顶部加入一个FlutterLogo: CustomScrollView( slivers: [ SliverToBoxAdapter(child: FlutterLogo(size:100),), //加入一个FlutterLogo SliverList( delegate: SliverChildBuilderDelegate((context, index) { //使用SliverChildBuilderDelegate实现动态加载(Builder) //delegate: SliverChildListDelegate对应不用Builder的ListView return Container( height: 200, color: Colors.primaries[index%Colors.primaries.length], ); })) ], ) 1.3 更加灵活的ListView——组合GridView ​ 我们也可以尝试组合GridView: CustomScrollView( slivers: [ /* 1. 用SliverToBoxAdapter包裹的普通Widget */ const SliverToBoxAdapter(child: FlutterLogo(size:100),), /* 2....

November 3, 2021 · 2 min · alvazu