鸿蒙版Flutter·全国/世界城市信息库

2025-03-12 17:49:58
156次阅读
0个评论

鸿蒙版Flutter·全国/世界城市信息库

License

Platform

家国情怀与开源初心

本项目诞生于我对鸿蒙生态建设的持续关注与热切期盼。作为开发者,我耗费大量精力研究鸿蒙特性与Flutter的融合方案,力求通过这个开源项目为国产操作系统生态贡献绵薄之力。项目从架构设计到代码实现都经过反复推敲,期待能吸引更多开发者共同完善,一起推动国产软件生态的繁荣发展。

项目概览

基本信息

  • 项目名称: 全国/世界城市信息库
  • 技术栈: Flutter 3.21 • Dart 3.1 • Provider状态管理 • RESTful API
  • 核心功能: 提供中国行政区划数据和世界城市信息的可视化展示与搜索

功能特性

  • 四级行政区划树形展示(省-市-区-街道)
  • 全球200+国家城市数据查询
  • 智能搜索与层级联动选择
  • 数据持久化与本地缓存

技术架构

技术栈详解

前端框架

  • Flutter 3.21
    • Material 3设计语言
    • 自适应布局支持
    • 国际化多语言支持
    • 深色模式适配

状态管理

  • Provider
    • 响应式状态更新
    • 依赖注入
    • 生命周期管理
    • 内存优化

数据层

  • SQLite
    • 本地数据持久化
    • 索引优化
    • 事务管理
  • Shared Preferences
    • 轻量级键值存储
    • 配置信息缓存

网络层

  • Dio
    • RESTful API封装
    • 拦截器机制
    • 请求重试
    • 数据序列化

架构设计

分层架构

graph TD
  A[表现层/UI] --> B[业务逻辑层]
  B --> C[数据访问层]
  C --> D[本地存储]
  C --> E[网络服务]

核心模块

  1. UI组件

    • 自适应布局组件
    • 主题定制组件
    • 列表/表单组件
    • 动画效果组件
  2. 业务模块

    • 地址选择器
    • 搜索引擎
    • 数据同步器
    • 缓存管理器
  3. 工具模块

    • 日志记录
    • 错误处理
    • 性能监控
    • 安全加密

性能优化

内存优化

  • 图片资源懒加载
  • 列表项虚拟化
  • 大数据分页加载
  • 内存泄漏检测

渲染优化

  • Widget重建优化
  • 自定义渲染管道
  • 帧率监控
  • 布局抖动消除

网络优化

  • 请求合并
  • 数据压缩
  • 缓存策略
  • 断点续传

安全方案

数据安全

  • 敏感数据加密
  • SQL注入防护
  • XSS攻击防御
  • HTTPS传输

应用安全

  • 代码混淆
  • 签名验证
  • 越狱检测
  • 调试保护

快速开始

环境配置

# 确保已安装Flutter SDK 3.21+
flutter doctor

# 克隆项目
git clone https://gitcode.com/nutpi/flutter_address.git

# 安装依赖
cd flutter_address
flutter pub get

# 运行项目
flutter run

项目结构

lib/
  ├── components/      # UI组件
  ├── constants/       # 常量定义
  ├── models/         # 数据模型
  ├── providers/      # 状态管理
  ├── screens/        # 页面
  ├── services/       # 服务
  └── utils/          # 工具类

API文档

RESTful接口

获取省份列表

GET /api/v1/provinces

Response:
{
  "code": 200,
  "data": [
    {
      "id": "110000",
      "name": "北京市",
      "level": 1
    }
  ]
}

获取城市列表

GET /api/v1/cities?provinceId=110000

Response:
{
  "code": 200,
  "data": [
    {
      "id": "110100",
      "name": "北京市",
      "level": 2
    }
  ]
}

测试报告

单元测试

void main() {
  group('AddressProvider Tests', () {
    test('加载省份列表', () async {
      final provider = AddressProvider();
      await provider.loadProvinces();
      expect(provider.provinces.length, greaterThan(0));
    });
  });
}

性能测试

  • 启动时间: < 2s
  • 内存占用: < 100MB
  • API响应: < 300ms
  • 页面切换: < 16ms

部署指南

Android部署

  1. 配置签名
  2. 修改应用ID
  3. 设置版本号
  4. 执行打包
flutter build apk --release

iOS部署

  1. 配置证书
  2. 设置Bundle ID
  3. 更新版本号
  4. 执行打包
flutter build ios --release

鸿蒙部署

  1. 配置开发证书
  2. 修改应用配置
  3. 设置版本信息
  4. 执行打包
flutter build ohos --release

贡献指南

开发流程

  1. Fork项目
  2. 创建特性分支
  3. 提交变更
  4. 发起Pull Request

代码规范

  • 遵循Dart语言规范
  • 使用强类型声明
  • 添加完整注释
  • 编写单元测试

提交规范

feat: 添加新特性
fix: 修复问题
docs: 修改文档
style: 代码格式化
refactor: 代码重构
test: 添加测试
chore: 其他修改

维护支持

技术支持

问题反馈

  1. GitHub Issues
  2. 微信群交流
  3. 邮件支持
  4. 在线文档

更新日志

v1.0.0 (2024-03-01)

  • 初始版本发布
  • 支持基础功能
  • 完善文档说明

v1.1.0 (计划中)

  • 优化搜索性能
  • 添加更多数据源
  • 支持自定义主题

开源协议

本项目采用 MIT 许可证

收藏00

登录 后评论。没有帐号? 注册 一个。