Flutter时间选择器(城市选择器,时间选择器,数量选择器)
倒入第三方库:
flutter_picker: 1.1.0
github:https://github.com/yangyxd/flutter_picker
flutter_picker的作者提供了多种adapter来处理不同的情况(NumberPickerAdapter,PickerDataAdapter,DateTimePickerAdapter),主要处理数据对应就行了。
简单的封装了下,方便调用;
import 'package:flutter/material.dart';
import 'package:flutter_picker/flutter_picker.dart';
import 'package:percentage_flutter/config/city.dart';
import 'package:percentage_flutter/kit/util/date_util.dart';const double _kPickerSheetHeight = 216.0;
const double _kPickerItemHeight = 32.0;typedef PickerConfirmCityCallback = void Function(List<String> stringData, List<int> selecteds);class PickHelper {///普通简易选择器static void openSimpleDataPicker<T>(BuildContext context, {@required List<T> list,String title,@required T value,PickerDataAdapter adapter,@required PickerConfirmCallback onConfirm,}) {var incomeIndex = 0;if (list != null) {for (int i = 0; i < list.length; i++) {if (list[i] == value) {incomeIndex = i;break;}}}openModalPicker(context,adapter: adapter ??PickerDataAdapter(pickerdata: list,isArray: false,),onConfirm: onConfirm,selecteds: [incomeIndex],title: title);}///数字选择器static void openNumberPicker(BuildContext context, {String title,List<NumberPickerColumn> datas,NumberPickerAdapter adapter,@required PickerConfirmCallback onConfirm,}) {openModalPicker(context,adapter: adapter ?? NumberPickerAdapter(data: datas ?? []),title: title,onConfirm: onConfirm);}///日期选择器static void openDateTimePicker(BuildContext context, {String title,DateTime maxValue,DateTime minValue,DateTime value,DateTimePickerAdapter adapter,@required PickerConfirmCallback onConfirm,}) {openModalPicker(context,adapter: adapter ??DateTimePickerAdapter(type: PickerDateTimeType.kYMD,isNumberMonth: true,yearSuffix: "年",maxValue: maxValue ?? DateUtil.after(year: 20),minValue: minValue ?? DateUtil.before(year: 100),value: value ?? DateTime.now(),monthSuffix: "月",daySuffix: "日"),title: title,onConfirm: onConfirm);}///地址选择器static void openCityPicker(BuildContext context,{String title,@required PickerConfirmCityCallback onConfirm,String selectCity=""}) {var proIndex = 0;var cityIndex = 0;openModalPicker(context,adapter: PickerDataAdapter(data: CityData.asMap().keys.map((provincePos) {var province = CityData[provincePos];List citys = province['city'];return PickerItem(text: Text(province['name'],),value: province['name'],children: citys.asMap().keys.map((cityPos) {var city=citys[cityPos];if(city['name']==selectCity){proIndex=provincePos;cityIndex=cityPos;}return PickerItem(text: Text(city['name']));}).toList());}).toList()),title: title, onConfirm: (pick, value) {var p = CityData[value[0]];List citys = p['city'];onConfirm([p['name'], citys[value[1]]['name']], value);},selecteds: [proIndex,cityIndex]);}static void openModalPicker(BuildContext context, {@required PickerAdapter adapter,String title,List<int> selecteds,@required PickerConfirmCallback onConfirm,}) {new Picker(adapter: adapter,title: new Text(title ?? ""),selecteds: selecteds,cancelText: '取消',confirmText: '确定',cancelTextStyle: TextStyle(color: Colors.black,fontSize: 16.0),confirmTextStyle: TextStyle(color: Colors.black,fontSize: 16.0),textAlign: TextAlign.right,itemExtent: _kPickerItemHeight,height: _kPickerSheetHeight,selectedTextStyle: TextStyle(color: Colors.black),onConfirm: onConfirm,).showModal(context);}
}
其中城市的数据还是要看数据源的格式,CityData是一个城市集合(类似于这样的数据结构)
const CityData=[
{"name": "北京","city": [{"name": "北京", "area": []}]},{"name": "上海","city": [{"name": "上海", "area": []}]},{"name": "天津","city": [{"name": "天津", "area": []}]},{"name": "重庆","city": [{"name": "重庆", "area": []}]},{"name": "浙江","city": [{"name": "杭州", "area": []},{"name": "嘉兴", "area": []},{"name": "宁波", "area": []},{"name": "绍兴", "area": []},{"name": "金华", "area": []},{"name": "湖州", "area": []},{"name": "舟山", "area": []},{"name": "衢州", "area": []},{"name": "温州", "area": []},{"name": "丽水", "area": []},{"name": "台州", "area": []}]}
];
flutter_picker还有dialog等多种弹出方式。
Flutter时间选择器(城市选择器,时间选择器,数量选择器)相关推荐
- Android --- 进入页面时,不弹出软键盘。当 EditText 被点击时不弹出软键盘,而是调用其他选择器,比如时间选择器等
功能需求: 1.进入页面时,不弹出软键盘 2.当 EditText 被点击时不弹出软键盘,而是调用其他选择器,比如时间选择器等 搜索百度测试: 1.百度上说用 editText.setInputTyp ...
- DateTimePicker 日期时间选择器设置默认时间
DateTimePicker 日期时间选择器设置默认时间 default-value属性接受一个数组,第一项为开始时间,第二项为结束时间,时间格式为:"YY-mm-dd HH:mm:ss&q ...
- 一款好用的时间控件(时间选择器)-jeDate
一款好用的时间控件(时间选择器)-jeDate 1.引入jedate.js: 2.上代码 1>方法一 <input class="datainp" id="d ...
- vue 日期时间选择器_Vue日期时间选择器
vue 日期时间选择器 Vue日期时间选择器 (Vue Datetime picker) Vue Datetime picker BY Vladyslav Shchepotin. Vue日期时间选择器 ...
- vue 日期选择器默认时间_ant-design-vue 时间选择器赋值默认时间的操作
我就废话不多说了,大家还是直接看代码吧~ show-time format="YYYY/MM/DD HH:mm:ss" :value="[this.moment(star ...
- vue滑动选择器(一键开启时间选择器)
vue滑动选择器(一键开启时间选择器) 一个vue的滑动选择器(移动端和PC端都能使用) 先来张效果图 安装 npm install time_check_jiangji 引入 import Time ...
- html5复合选择器,web前端练习31----Css,选择器(基本选择器,复合选择器,属性选择器,伪类,伪元素,优先级,雪碧图练习)...
参考文档:https://man.ilovefishc.com/css3/ 一.基本选择器: 1通配符选择器 * 2元素选择器 element 3类选择器 .class 4id选择器 #id 5内联样 ...
- html四种选择器的特点,css四种选择器总结
css 在网页开发中扮演着重要的角色,被誉为网页开发的三剑客,如果说html是人的外在器官部分,那css无疑是各个器官组成在一起然后表现出来,css又称样式重叠在网页排版布局中的地位举足轻重. 做为后 ...
- 《HTML 5与CSS 3权威指南(第3版·下册)》——19.4.2 E:enabled伪类选择器与E:disabled伪类选择器...
19.4.2 E:enabled伪类选择器与E:disabled伪类选择器 q E:enabled伪类选择器用来指定当元素处于可用状态时的样式. q E:disabled伪类选择器用来指定当元素处于不 ...
- html选择器有哪些child,css3选择器child有哪些?css3选择器child用法详解
本篇文章给大家带来的内容是关于css3选择器child有哪些?css3选择器child用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 对于CSS3的结构伪类选择器,为了更好地 ...
最新文章
- 精益创新之设计思维研磨——《设计改变一切》书评
- 导航菜单(移动出现子菜单)
- NodeJs连接Mysql数据库
- 混合使用Azure LB和ILB访问相同web服务(3)
- VC6 + OpenCV1.0实现图片缩放显示
- java在线编辑器_微软开源在线代码编辑器——Monaco Editor
- 除了陈真处外的深圳论坛SZ4J
- 这个应用魔方厉害了,让软件开发者效率提升10倍
- C#.NET学习笔记11,12---布尔表达式2组合,if语句
- 每个人都可以创业成功,不要急于求成,慢慢来
- 基于visual Studio2013解决C语言竞赛题之0204实数求值
- Spring Bean的作用域
- 3.SPSS Modeler数据基本分析笔记
- esxi6.7 vSAN 运行状况 控制器固件版本 控制器实用程序问题
- 一根MicroUSB线完成树莓派zero开机配置(包括SSH以及网络共享)
- Redis Client 之 Jedis与Lettuce
- 注册快手提示服务器繁忙,快手登录失败怎么回事
- Trister Community DAOs最新型DAO架构
- shell脚本清理网宿cdn缓存
- 悼念!旷视首席科学家孙剑博士去世,享年 45 岁