Flutter实现滑动页面停留吸附

如图,实现这种,

  • 滑动吸附效果的应用场景(如电商分类导航、Tab栏联动)
Dart 复制代码
import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MapWithListPage(),
    );
  }
}

class MapWithListPage extends StatelessWidget {
  const MapWithListPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: [
          // 底层地图
          Container(
            color: Colors.blue[200], // 占位,可以替换成地图
            child: const Center(child: Text("地图在这里")),
          ),

          // 上层可拖动的列表
          DraggableScrollableSheet(
            initialChildSize: 0.3, // 初始高度 = 30%
            minChildSize: 0.3,     // 最小高度 = 30%
            maxChildSize: 0.9,     // 最大高度 = 100%
            snap: true,            // 开启吸附
            snapSizes: const [0.3, 0.6, 0.9], // 三个停靠点
            builder: (context, scrollController) {
              return Container(
                decoration: const BoxDecoration(
                  color: Colors.white,
                  borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
                  boxShadow: [BoxShadow(blurRadius: 10, color: Colors.black26)],
                ),
                child: ListView.builder(
                  controller: scrollController,
                  itemCount: 30,
                  itemBuilder: (context, index) {
                    return ListTile(title: Text("列表项 $index"));
                  },
                ),
              );
            },
          ),
        ],
      ),
    );
  }
}
相关推荐
浮芷.14 分钟前
Flutter 框架跨平台鸿蒙开发 - AR动物互动应用
flutter·ar·harmonyos
xiaotao13117 分钟前
第九章:Vite API 参考手册
前端·vite·前端打包
午安~婉23 分钟前
Electron桌面应用聊天(续)
前端·javascript·electron
彧翎Pro1 小时前
基于 RO1 noetic 配置 robosense Helios 32(速腾) & xsense mti 300
前端·jvm
小码哥_常1 小时前
解锁系统设置新姿势:Activity嵌入全解析
前端
之歆1 小时前
前端存储方案对比:Cookie-Session-LocalStorage-IndexedDB
前端
哟哟耶耶1 小时前
vue3-单文件组件css功能(:deep,:slotted,:global,useCssModule,v-bind)
前端·javascript·css
是罐装可乐1 小时前
深入理解“句柄(Handle)“:从浏览器安全到文件系统访问
前端·javascript·安全
加农炮手Jinx2 小时前
Flutter 组件 conventional 适配鸿蒙 HarmonyOS 实战:约定式提交标准,构建自动化版本治理与 CI/CD 质量治理架构
flutter·harmonyos·鸿蒙·openharmony
王码码20352 小时前
Flutter 三方库 appstream 的鸿蒙化适配指南 - 驾驭 Linux 生态元数据规范,打造高性能、标准化、国际化的 OpenHarmony 桌面应用商店分发基石
flutter·harmonyos·鸿蒙·openharmony