Language: English

city_pickers

中国的城市三级联动选择器

Demo

开始

在flutter的项目文件中增加依赖

dependencies:
  ...
    city_pickers:^0.0.1

关于如何运行flutter项目, 参考官方文档documentation.

使用方法

Import city_pickers.dart

import 'package:city_pickers/city_pickers.dart';

简单使用方法

...
// type 1
Result result = await CityPickers.showCityPicker(
  context: context,
);
// type 2
Result result2 = await CityPickers.showFullPageCityPicker(
  context: context,
);
// type 3
Result result2 = await CityPickers.showCitiesSelector(
  context: context,
);

CityPickers 静态方法

NameTypeDesc
showCityPickerFunction呼出弹出层,显示多级选择器
showFullPageCityPickerFunction呼出一层界面, 显示多级选择器
showCitiesSelectorFunction呼出一层, 显示支持字母定位城市选择器
utilsFunction获取utils接口的钩子

showCityPicker 参数说明

NameTypeDefaultDesc
contextBuildContext上下文对象
themeThemeDataTheme.of(context)主题, 可以自定义
locationCodeString110000初始化地址信息, 可以是省, 市, 区的地区码
heightdouble300弹出层的高度, 过高或者过低会导致容器报错
showTypeShowTypeShowType.pca三级联动, 显示类型
barrierOpacitydouble0.5弹出层的背景透明度, 应该是大于0, 小于1
barrierDismissiblebooltrue是否可以通过点击弹出层背景, 关闭弹出层
cancelWidgetWidget用户自定义取消按钮
confirmWidgetWidget用户自定义确认按钮
itemExtentdouble目标框高度
itemBuilderWidgetitem生成器, function(String value, List lists, item){}, 当itemBuilder不为空的时候. 必须设置itemExtent
citiesDataMap城市数据选择器的城市与区的数据源
provincesDataMap省份数据选择器的省份数据源

showFullPageCityPicker 参数说明

NameTypeDefaultDesc
contextBuildContextnull上下文对象
themeThemeDataTheme.of(context)主题, 可以自定义
locationCodeString110000初始化地址信息, 可以是省, 市, 区的地区码
showTypeShowTypeShowType.pca三级联动, 显示类型

|citiesData|Map|城市数据|选择器的城市与区的数据源| |provincesData|Map|省份数据|选择器的省份数据源|

showCitiesSelector 参数说明

NameTypeDefaultDesc
contextBuildContextnull上下文对象
themeThemeDataTheme.of(context)主题, 可以自定义
locationCodeString110000初始化地址信息, 可以是省, 市, 区的地区码
titleString城市选择器弹出层界面标题
citiesDataMap城市数据选择器的城市与区的数据源
provincesDataMap省份数据选择器的省份数据源
hotCitiesList<HotCity>null热门城市
sideBarStyleBaseStyle初始默认样式右侧字母索引集样式
cityItemStyleBaseStyle初始默认样式城市选项样式
topStickStyleBaseStyle初始默认样式顶部索引吸顶样式

utils 说明

utils 是用来封装常用的一些方法, 方便使用者能更好的使用该插件. 使用者通过以下方式声明实例, 可以获取所有的工具类方法

// 声明实例
CityPickerUtil cityPickerUtils = CityPickers.utils();

Result getAreaResultByCode(String code)

使用者通过地区ID, 获取所在区域的省市县等相关信息. 当未查询到具体信息. 返回空的Result对象.

print('result>>> ${cityPickerUtils.getAreaResultByCode('100100)}');

// 输出为: result>>>> {"provinceName":"北京市","provinceId":"110000","cityName":"东城区","cityId":"110101"}

数据来源

National Bureau of Statistics

声明

本项目Example部份代码与样式, 参考借鉴Flutter Go, flutter go 是flutter 开发者帮助 APP,包含 flutter 常用 140+ 组件的demo 演示与中文文档

To Do List

  • x 城市选择器, 借鉴点评
  • 支持拼音等模糊搜索
  • 加入单元测试

Libraries

_province
base_citys
city_pickers
point
province
result

Dart

VM

dart:ffi
Foreign Function Interface for interoperability with the C programming language. [...]

Web

dart:html
HTML elements and other resources for web-based applications that need to interact with the browser and the DOM (Document Object Model). [...]
dart:js
Low-level support for interoperating with JavaScript. [...]
dart:js_util
Utility methods to efficiently manipulate typed JSInterop objects in cases where the name to call is not known at runtime. You should only use these methods when the same effect cannot be achieved with @JS annotations. These methods would be extension methods on JSObject if Dart supported extension methods.