当前位置: 首页 > news >正文

Flutter SliverAppBar 吸顶效果

吸顶是常见的布局,主要使用的是CustomScrollView 和SliverApp组件实现的

页面布局

  @overrideWidget build(BuildContext context) {return CustomScrollView(controller: controller.scrollController!,physics: const BouncingScrollPhysics(),slivers: [SliverAppBar(backgroundColor: Colors.blue,iconTheme: const IconThemeData(color: Colors.white),expandedHeight: controller.kExpandedHeight,floating: false,pinned: true,stretch: false,snap: false,stretchTriggerOffset: ScreenHelper.height(100),onStretchTrigger: () async {return;},flexibleSpace: FlexibleSpaceBar(centerTitle: true,title: Obx(() => Text(controller.isAppBArPinned.value ? "体重检测" : "",style: TextStyle(color: Colors.white, fontSize: ScreenHelper.sp(16)),)),collapseMode: CollapseMode.parallax,stretchModes: [StretchMode.zoomBackground,StretchMode.fadeTitle,StretchMode.blurBackground,],background: Container(color: Colors.blue,child: Column(mainAxisAlignment: MainAxisAlignment.start,children: [SizedBox(height: ScreenHelper.topSafeHeight + 18),Text("2021年12月30日 13:00",style: TextStyle(color: Colors.white.withOpacity(.8)),),SizedBox(height: ScreenHelper.height(30)),Row(mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.end,children: [Text("52.0",style: TextStyle(color: Colors.white,fontSize: ScreenHelper.sp(40),fontWeight: FontWeight.bold),),Text("kg",style: TextStyle(color: Colors.white, fontSize: ScreenHelper.sp(13)),)],),SizedBox(height: ScreenHelper.height(5),),Text("BMI 20.7 标准",style: TextStyle(color: Colors.white.withOpacity(.8),fontSize: ScreenHelper.sp(14)),),SizedBox(height: ScreenHelper.height(15),),Container(padding: EdgeInsets.symmetric(horizontal: 6, vertical: 4),decoration: BoxDecoration(color: Colors.yellow,borderRadius: BorderRadius.circular(50)),child: Text("记录体重",style: TextStyle(color: Colors.white, fontSize: ScreenHelper.sp(14)),),)],),),),),SliverFixedExtentList(delegate: SliverChildBuilderDelegate((context, index) => ListTile(title: Text("测试",style: TextStyle(color: AppTheme.dartTextColor),),),childCount: 30),itemExtent: 50.0,),],);}

因为使用的getx状态管理,所以数据的操作都在getx里

GetxController 

 ScrollController? scrollController;final isAppBArPinned = false.obs; //判断APPbar是否吸顶double kExpandedHeight = ScreenHelper.width(240);void onInit() {// TODO: implement onInitscrollController = ScrollController()..addListener(_onScroll);super.onInit();}void _onScroll() {if (scrollController!.hasClients &&scrollController!.offset > kExpandedHeight - kToolbarHeight) {isAppBArPinned.value = true;} else {isAppBArPinned.value = false;}}@overridevoid onClose() {// TODO: implement onClosesuper.onClose();scrollController!.dispose();}

最后呈现的效果

吸顶

http://www.lryc.cn/news/191225.html

相关文章:

  • Java Spring Boot 自动装配:简化配置和提高开发效率
  • 对象转换之modelmapper
  • Ant Design+react 路由跳转
  • 提高爬虫效率的秘诀之一:合理配置库池数量
  • 初学者必看,前端 Debugger 调试学习
  • Dubbo—Admin 整体架构与安装步骤
  • C++11打断线程的几种方式
  • 如何提升网站排名和用户体验:优化网站速度
  • 【Redis】Hash 哈希内部编码方式
  • JUC第二十八讲:JUC工具类: Semaphore详解
  • vue3组合式API实现父组件触发子组件中的方法 | vue3中ref的用法 | defineExpose的使用场景
  • 【Qt之QTableWidget和QTreeWidget】树悬停、选择样式及表格表头和首行间隔线
  • 使用余弦算法计算向量相似性
  • 存档&改造【06】Apex-Fancy-Tree-Select花式树的使用误删页数据还原(根据时间节点导出导入)
  • OpenCV7-copyTo截取ROI
  • OpenCV10-图像直方图:直方图绘制、直方图归一化、直方图比较、直方图均衡化、直方图规定化、直方图反射投影
  • 线性回归模型进行特征重要性分析
  • hadoop -hive 安装
  • 小迈物联网网关对接串口服务器[Modbus RTU]
  • Java版本+企业电子招投标系统源代码+支持二开+招投标系统+中小型企业采购供应商招投标平台
  • Vue3中reactive, onMounted, ref,toRaw,conmpted 使用方法
  • 有哪些免费的PPT模板网站,推荐这6个PPT模板免费下载网站!
  • 剧院建筑三维可视化综合管控平台提高安全管理效率
  • “过度炒作”的大模型巨亏,Copilot每月收10刀,倒赔20刀
  • 顺序表经典的OJ题
  • video_topic
  • uniapp获取公钥、MD5,‘keytool‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  • Jetson Orin NX 开发指南(5): 安装 OpenCV 4.6.0 并配置 CUDA 以支持 GPU 加速
  • Spring Security 6.x 系列【67】认证篇之安装 ApacheDS
  • 理解线程池源码 【C++】面试高频考点