# city_pickers
**Repository Path**: coder-lijing/city_pickers
## Basic Information
- **Project Name**: city_pickers
- **Description**: No description available
- **Primary Language**: Dart
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-03-08
- **Last Updated**: 2021-03-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Language: [English](https://github.com/hanxu317317/city_pickers/blob/master/README-en.md)
# city_pickers
中国的城市三级联动选择器
# Demo
# 开始
在flutter的项目文件中增加依赖
```
dependencies:
...
city_pickers:^0.0.1
```
关于如何运行flutter项目, 参考官方文档[documentation](https://flutter.io/).
# 使用方法
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 静态方法
|Name|Type|Desc|
|:---------------|:--------|:----------|
|showCityPicker|Function|呼出弹出层,显示多级选择器 |
|showFullPageCityPicker|Function|呼出一层界面, 显示多级选择器|
|showCitiesSelector |Function|呼出一层, 显示支持字母定位城市选择器|
|utils|Function|获取utils接口的钩子|
### showCityPicker 参数说明
|Name|Type|Default|Desc|
|:---------------|:--------|:----|:----------|
|context|BuildContext||上下文对象|
|theme|ThemeData|Theme.of(context)| 主题, 可以自定义|
|locationCode|String|110000| 初始化地址信息, 可以是省, 市, 区的地区码|
|height|double|300| 弹出层的高度, 过高或者过低会导致容器报错|
|showType|ShowType|ShowType.pca| 三级联动, 显示类型|
|barrierOpacity|double|0.5|弹出层的背景透明度, 应该是大于0, 小于1|
|barrierDismissible|bool|true| 是否可以通过点击弹出层背景, 关闭弹出层|
|cancelWidget|Widget||用户自定义取消按钮|
|confirmWidget| Widget || 用户自定义确认按钮 |
|itemExtent|double||目标框高度|
|itemBuilder|Widget||item生成器, function(String value, List lists, item){}, 当itemBuilder不为空的时候. 必须设置itemExtent|
|citiesData|Map|[城市数据](https://github.com/hanxu317317/city_pickers/blob/master/lib/meta/province.dart)|选择器的城市与区的数据源|
|provincesData|Map|[省份数据](https://github.com/hanxu317317/city_pickers/blob/master/lib/meta/province.dart)|选择器的省份数据源|
### showFullPageCityPicker 参数说明
|Name|Type|Default|Desc|
|:---------------|:--------|:----|:----------|
|context|BuildContext|null|上下文对象|
|theme|ThemeData|Theme.of(context)| 主题, 可以自定义|
|locationCode|String|110000| 初始化地址信息, 可以是省, 市, 区的地区码|
|showType|ShowType|ShowType.pca| 三级联动, 显示类型|
|citiesData|Map|[城市数据](https://github.com/hanxu317317/city_pickers/blob/master/lib/meta/province.dart)|选择器的城市与区的数据源|
|provincesData|Map|[省份数据](https://github.com/hanxu317317/city_pickers/blob/master/lib/meta/province.dart)|选择器的省份数据源|
### showCitiesSelector 参数说明
|Name|Type|Default|Desc|
|:---------------|:--------|:----|:----------|
|context|BuildContext|null|上下文对象|
|theme|ThemeData|Theme.of(context)| 主题, 可以自定义|
|locationCode|String|110000| 初始化地址信息, 可以是省, 市, 区的地区码|
|title|String|城市选择器|弹出层界面标题|
|citiesData|Map|[城市数据](https://github.com/hanxu317317/city_pickers/blob/master/lib/meta/province.dart)|选择器的城市与区的数据源|
|provincesData|Map|[省份数据](https://github.com/hanxu317317/city_pickers/blob/master/lib/meta/province.dart)|选择器的省份数据源|
|hotCities|List\|null|热门城市|
|sideBarStyle|[BaseStyle](https://github.com/hanxu317317/city_pickers/blob/develop/lib/src/cities_selector/cities_style.dart)|初始默认样式| 右侧字母索引集样式|
|cityItemStyle|[BaseStyle](https://github.com/hanxu317317/city_pickers/blob/develop/lib/src/cities_selector/cities_style.dart)|初始默认样式| 城市选项样式|
|topStickStyle|[BaseStyle](https://github.com/hanxu317317/city_pickers/blob/develop/lib/src/cities_selector/cities_style.dart)|初始默认样式| 顶部索引吸顶样式|
### 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](https://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/index.html)
# 声明
本项目Example部份代码与样式, 参考借鉴[Flutter Go](https://github.com/alibaba/flutter-go/), **flutter go** 是flutter 开发者帮助 APP,包含 flutter 常用 140+ 组件的demo 演示与中文文档
### To Do List
- [x] 城市选择器, 借鉴点评
- [ ] 支持拼音等模糊搜索
- [ ] 加入单元测试