前言
Flutter 作为目前通用的业界跨平台解决方案,开辟了一套全新的设计理念,通过自研的 UI 框架,支持高效构建多端平台上的应用,同时保持着原生应用一样的高性能。在Flutter项目开发过程中,对插件的开发和复用能够提高开发效率,降低工程的耦合度。Flutter开发者可以引入对应插件就可以为项目快速集成相关能力,从而专注于具体业务功能的实现。而在Flutter项目开发过程中面对通用业务逻辑拆分、或者需要对原生能力封装等场景时,开发者需要开发新的组件。
为减少开发者同时开发Android和iOS应用的成本,提升开发效率,降低集成地图SDK的门槛,腾讯位置服务团队也计划于业务实践中基于原生地图SDK能力封装一套地图Flutter插件,支持Flutter开发者跨平台调用地图SDK接口。笔者在2019年实习期间,曾基于当时的最新版本4.2.4的Android地图SDK,将地图SDK中一些常用的基础的地图操作功能封装,构建了一套Android端的地图SDK Flutter插件。
现如今,地图SDK已经迭代到了4.4.0版本,笔者也将地图Flutter插件进行了一次相关版本升级。本篇文章将介绍地图Flutter插件项目的构建、地图实例的加载以及demo示例呈现。对于地图基础操作的功能封装细节将在后续文章中进行详细讲解说明。
地图Flutter插件项目的构建
地图Flutter插件项目结构
地图Flutter插件项目构架的整体结构如下图所示:
android/ios目录:原生代码。对应为Android/iOS Flutter插件目录。
lib目录:Dart 代码。Flutter开发者将会使用这里的Flutter插件实现的接口。
example目录:地图SDK的demo程序。用于验证Flutter插件的可用性的使用示例。
地图Flutter插件依赖配置项
Android端的Flutter插件配置项与官网关于Android地图SDK的配置说明类似,需要配置android目录下的两个文件:build.gradle、AndroidManifest.xml。
其中Android端的Flutter插件的包名为com.tencent.tencentmap,AndroidManifest.xml文件配置如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tencent.tencentmap">
<!-- 腾讯地图 sdk 要求的权限(开始) -->
<!-- 访问网络获取地图服务 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 检查网络可用性 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 访问WiFi状态 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<