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

Flutter---CupertinoPicker滚动选择器

效果图

概念:CupertinoPicker 是 Flutter 框架中非常核心的一个滚动选择器组件(iOS 风格的滚动列表选择控件),广泛用于 iOS 风格的选择界面(比如选择日期、时间、选项等)。

特点:

  • 支持滚轮滑动选择(类似 iPhone 设置里的时间/日期选择器)

  • 样式自动带有 惯性滚动、回弹效果、居中高亮

  • 可自定义内容(不限于文字)

它有好几个参数,可以一个一个去试试,看效果

实现代码

  void showPickerDialog() {int selectedIndex = 0;List<String> options = ['广州', '惠州', '深圳', '茂名', '东莞',"韶关"];final controller = FixedExtentScrollController(initialItem: 2);//初始选中项为深圳showDialog(context: context,builder: (context) {return AlertDialog(title: Text('请选择'),content: SizedBox(height: 200,child: CupertinoPicker(itemExtent: 40, //每个选项的高度//diameterRatio: 1.5, // 默认值 1.1,值越大透视效果越小(滑动效果)//magnification: 1, // 中间选项的放大倍数(放大选中的文字)//squeeze: 0.8, // 默认值 1.45,值越小选项间距越大//useMagnifier: true, // 是否使用放大镜效果(好像肉眼看不出什么效果)scrollController: controller,//控制初始选中项onSelectedItemChanged: (index) { //在滚动结束后触发selectedIndex = index;},children: options.map((option) {return Center(child: Text(option));}).toList(),//selectionOverlay: null,// 移除选择覆盖层),),actions: [TextButton(onPressed: () => Navigator.pop(context),child: Text('取消'),),TextButton(onPressed: () {print('选择了: ${options[selectedIndex]}');Navigator.pop(context);},child: Text('确定'),),],);},);}

代码实例

home_page.dart


import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:my_flutter/person_information_page.dart';class HomePage extends StatefulWidget{const HomePage({super.key});@overrideState<StatefulWidget> createState() => _HomePageState();}class _HomePageState extends State<HomePage> {@overrideWidget build(BuildContext context) {return Scaffold(//2.构建UIbody: Container(height: double.infinity,//覆盖高width: double.infinity,//覆盖宽padding: const EdgeInsets.symmetric(vertical: 10,horizontal:10),//边内边距//主页背景颜色上下渐变decoration: const BoxDecoration(gradient: LinearGradient(begin: Alignment.topCenter,end: Alignment.centerRight,colors: [Colors.blue,Colors.white,],),),child: GestureDetector(onTap:showPickerDialog ,//设置按钮的点击事件child: Column(children: [SizedBox(height: 100,),//按钮Container(//按钮大小height: 50,width: 400,//按钮的样式decoration: BoxDecoration(color: Colors.white,borderRadius: BorderRadius.circular(20),),child: Center(child: Text("CupertinoPicker滚动选择组件"),)),SizedBox(height: 20,),],))),);}void showPickerDialog() {int selectedIndex = 0;List<String> options = ['广州', '惠州', '深圳', '茂名', '东莞',"韶关"];final controller = FixedExtentScrollController(initialItem: 2);//初始选中项为深圳showDialog(context: context,builder: (context) {return AlertDialog(title: Text('请选择'),content: SizedBox(height: 200,child: CupertinoPicker(itemExtent: 40, //每个选项的高度//diameterRatio: 1.5, // 默认值 1.1,值越大透视效果越小(滑动效果)//magnification: 1, // 中间选项的放大倍数(放大选中的文字)//squeeze: 0.8, // 默认值 1.45,值越小选项间距越大//useMagnifier: true, // 是否使用放大镜效果(好像肉眼看不出什么效果)scrollController: controller,//控制初始选中项onSelectedItemChanged: (index) { //在滚动结束后触发selectedIndex = index;},children: options.map((option) {return Center(child: Text(option));}).toList(),//selectionOverlay: null,// 移除选择覆盖层),),actions: [TextButton(onPressed: () => Navigator.pop(context),child: Text('取消'),),TextButton(onPressed: () {print('选择了: ${options[selectedIndex]}');Navigator.pop(context);},child: Text('确定'),),],);},);}}

http://www.dtcms.com/a/523763.html

相关文章:

  • 全面掌握PostgreSQL关系型数据库,备份和恢复,笔记46和笔记47
  • Python SQLAlchemy模块:从入门到实战的数据库操作指南
  • 天津哪里有做网站的jquery wordpress
  • 流媒体网站建设规划亚马逊网站建设案例
  • PHP 异步IO扩展包 AsyncIO v2.0.0 发布
  • 《信息系统项目管理师》案例分析题及解析模拟题5
  • Jenkins上实现CI集成软件信息Teams群通知案例实现。
  • ZYNQ平台中断服务函数中的变量不加volatile修饰导致的奇怪问题解决
  • 2026年UX/UI五大趋势:AI、AR与包容性设计将重新定义用户体验
  • 网站做跳转自己建网站卖鞋
  • 百度网站服务器外贸网站优化
  • 应广单片机烧录跳线J7专用PCB使用说明
  • Java 前后端加密与编码技术:从概念到实战场景全解析
  • 拒绝笨重,一款轻量、极致简洁的开源接口管理工具 - PostIn
  • 建设银行信用卡网站是哪个茶叶seo网站推广与优化方案
  • vant van-uploader上传file文件;回显时使用imageId拼接路径
  • Java常用中间件整理讲解——Redis,RabbitMQ
  • JavaEE初阶7.0
  • 从“天书”到源码:HarmonyOS NEXT 崩溃堆栈解析实战指南
  • 个人网站收款google play 应用商店
  • _撸猫websocket服务器端,手机远程服务端
  • 【论文精读】FDGaussian:基于几何感知扩散模型的单图快速高斯溅射 3D 重建
  • 功防世界-Web-bug
  • 做网站能拿多少钱平面设计 网站推荐
  • REST介绍,实质,六大约束,优缺点(数据冗余问题,身份验证困难(解决方式 -- JWT+集中式认证服务,使用代理))
  • Snapchat Data Scientist 面试经验分享|从 OA 到 Final Round 全流程复盘
  • 消息队列集群——RabbitMQ
  • 初识C语言14.动态内存管理
  • ks2e做网站高端品牌设计
  • 华为od-22届考研-C++面经