标签:index 滚动 CustomScrollView BuildContext 组件 Flutter Sliver
CustomScrollView是可以使用Sliver来自定义滚动模型(效果)的组件。
可滚动组件的Sliver版
在Flutter中,Sliver通常指可滚动组件子元素,但在CustomScrollView中,需要粘起来的可滚动组件就是CustomScrollView的Sliver了
为了让可滚动组件能和CustomScrollView配合使用,Flutter提供了一些可滚动组件的Sliver版,如SliverList、SliverGrid等。
实际上Sliver版的可滚动组件和非Sliver版的可滚动组件最大的区别就是前者不包含滚动模型,而后者包含滚动模型。
CustomScrollView才可以将多个Sliver"粘"在一起,这些Sliver共用CustomScrollView的Scrollable,所以最终才实现了统一的滑动效果。
例
import 'package:flutter/material.dart';
class StudyCustomScrollView extends StatelessWidget{
@override
Widget build(BuildContext context) {
//Material design风格
return Material(
child: CustomScrollView(
slivers: <Widget>[
//导航栏
SliverAppBar(
pinned: true,//是否固定导航栏
expandedHeight: 200, //默认高度是状态栏和导航栏的高度
flexibleSpace: FlexibleSpaceBar(
title: Text("CustomScrollView"),
centerTitle: true,//标题居中
background: Image.asset("images/tree.jpg",fit: BoxFit.cover,),
),
),
SliverPadding(
padding: const EdgeInsets.all(10),
sliver: SliverGrid(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,//按2列展示
mainAxisSpacing: 5,//主轴边距
crossAxisSpacing: 5,//纵轴边距
childAspectRatio: 3,//宽高比3:1
),
delegate: SliverChildBuilderDelegate(
(BuildContext context,int index){
return Container(
alignment: Alignment.center,
color: Colors.blue[100*(index%8)],
child: Text("我是Item $index"),
);
},
childCount: 36,
),
),
),
SliverFixedExtentList(
delegate: SliverChildBuilderDelegate(
(BuildContext context,int index){
return Container(
alignment: Alignment.center,
color: Colors.yellow[100*(index%8)],
child: Text("一百零八将 $index"),
);
},
childCount: 108,
),
itemExtent: 30,//高度为30
),
],
),
);
}
}
效果
标签:index,滚动,CustomScrollView,BuildContext,组件,Flutter,Sliver 来源: https://blog.csdn.net/xiaolaohuqwer/article/details/117740938
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。