قبل إعداد مشروع Flutter، تأكَّد من إكمال الخطوات الأساسية الموضّحة في قسم قبل البدء. بعد تفعيل الفوترة وإنشاء مفتاح واجهة برمجة التطبيقات، يمكنك إعداد مشروع Flutter الذي تستخدمه لتطوير تطبيقك.
الخطوة 1: تثبيت البرنامج المطلوب
لإنشاء مشروع باستخدام حزمة Google Maps for Flutter، عليك تثبيت حزمة تطوير البرامج (SDK) الخاصة بـ Flutter وإعداد بيئة التطوير للمنصة المستهدفة. يمكنك الاطّلاع على دليل تثبيت Flutter للحصول على التفاصيل.
الخطوة 2: تثبيت حزمة Google Maps for Flutter في مشروع جديد
توفّر Flutter حزمة Google Maps for Flutter كمكوّن إضافي لـ Flutter.
أنشئ مشروع Flutter وأضِف المكوّن الإضافي "خرائط Google".
-
أنشئ مشروع Flutter جديدًا باستخدام `flutter create`:
الرمز البرمجي لتطبيقك موجود فيflutter create google_maps_in_flutter --platforms=android,ios,webCreating project google_maps_in_flutter... [Listing of created files elided] Wrote 127 files. All done!google_maps_in_flutter/lib/main.dart. لتشغيل تطبيقك، اكتب: يستهدف هذا التطبيق أجهزة iOS وAndroid والويب. لا تتيح حزمة تطوير البرامج (SDK) لتطبيق "خرائط Google" تطبيقات أجهزة الكمبيوتر خارج المتصفّح في الوقت الحالي.cd google_maps_in_flutterflutter run -
أضِف المكوّن الإضافي لحزمة Google Maps for Flutter إلى هذا المشروع.
flutter pub add google_maps_flutterResolving dependencies... [Listing of dependencies elided] Changed 14 dependencies!
الخطوة 3: ضبط إصدار النظام الأساسي
Android
اضبط الحدّ الأدنى لإصدار حزمة تطوير البرامج (SDK) لنظام Android.
- افتح ملف الإعداد
android/app/build.gradleفي بيئة التطوير المتكاملة المفضّلة لديك. - غيِّر قيمة
android.defaultConfig.minSdkVersionإلى21:android { //... defaultConfig { applicationId "com.example.google_maps_in_flutter" minSdkVersion 21 // Set to 21 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName } //... } - عند ضبط
defaultConfig، حدِّد ApplicationID فريدًا خاصًا بك. - زامِن تغييرات مشروعك مع Gradle.
iOS
اضبط الحدّ الأدنى لإصدار النظام الأساسي iOS.
- افتح ملف الإعداد
ios/Podfileفي بيئة التطوير المتكاملة المفضّلة لديك. - أضِف الأسطر التالية في بداية ملف Podfile هذا:
# Set platform to 14.0 to enable latest Google Maps SDK platform :ios, '14.0'
الخطوة 4: إضافة مفتاح واجهة برمجة التطبيقات إلى المشروع
في قسم قبل البدء، أنشأت مفتاح واجهة برمجة تطبيقات لتطبيقك. والآن، أضِف هذا المفتاح إلى مشروع Flutter. بالنسبة إلى Flutter، عليك إضافة مفتاح واجهة برمجة التطبيقات هذا إلى جميع الأنظمة الأساسية المستهدَفة: iOS وAndroid والويب.
في الأمثلة التالية، استبدِل YOUR_API_KEY بمفتاح واجهة برمجة التطبيقات.
Android
لتبسيط هذه المهمة، ننصحك باستخدام الـ مكوّن الإضافي Secrets Gradle لأجهزة Android.
لتثبيت المكوّن الإضافي Secrets Gradle لأجهزة Android وتخزين مفتاح واجهة برمجة التطبيقات، اتّبِع الخطوات التالية:
-
في "استوديو Android"، افتح ملف
build.gradleعلى مستوى الجذر وأضِف الرمز التالي إلى العنصرdependenciesضِمنbuildscript.Groovy
buildscript { dependencies { // ... classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1" } }
Kotlin
buildscript { dependencies { // ... classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1") } }
-
افتح ملف
build.gradleعلى مستوى التطبيق وأضِف الرمز التالي إلى العنصرplugins.Groovy
plugins { id 'com.android.application' // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
Kotlin
plugins { id("com.android.application") // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
- إذا كنت تستخدم "استوديو Android"، زامِن مشروعك مع Gradle.
-
افتح
local.propertiesفي دليل مستوى المشروع، ثم أضِف الرمز التالي. استبدِلYOUR_API_KEYبمفتاح واجهة برمجة التطبيقات.MAPS_API_KEY=YOUR_API_KEY
-
في ملف
AndroidManifest.xml، انتقِل إلىcom.google.android.geo.API_KEYوعدِّل السمةandroid:valueعلى النحو التالي:<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />ملاحظة:
com.google.android.geo.API_KEYهو اسم البيانات الوصفية المقترَحة لمفتاح واجهة برمجة التطبيقات. يمكن استخدام مفتاح بهذا الاسم للمصادقة على عدة واجهات برمجة تطبيقات تستند إلى "خرائط Google" على نظام Android الأساسي، بما في ذلك حزمة تطوير البرامج (SDK) الخاصة بـ Flutter. لضمان التوافق مع الإصدارات السابقة، تتيح واجهة برمجة التطبيقات أيضًا الاسمcom.google.android.maps.v2.API_KEY. يسمح هذا الاسم القديم بالمصادقة على Android Maps API v2 فقط. لا يمكن أن يحدِّد التطبيق سوى أحد أسماء البيانات الوصفية لمفتاح واجهة برمجة التطبيقات. إذا تم تحديد كليهما، ستعرض واجهة برمجة التطبيقات استثناءً.
ملاحظة: كما هو موضّح أعلاه،
com.google.android.geo.API_KEY هو اسم البيانات الوصفية المقترَحة
لمفتاح واجهة برمجة التطبيقات. يمكن استخدام مفتاح بهذا الاسم للمصادقة على عدة
واجهات برمجة تطبيقات تستند إلى "خرائط Google" على نظام Android الأساسي، بما في ذلك الـ
Flutter SDK. لضمان التوافق مع الإصدارات السابقة، تتيح واجهة برمجة التطبيقات أيضًا
الاسم com.google.android.maps.v2.API_KEY. يسمح هذا الاسم القديم
بالمصادقة على Android Maps API v2 فقط. لا يمكن أن يحدِّد التطبيق سوى أحد أسماء البيانات الوصفية لمفتاح واجهة برمجة التطبيقات. إذا تم تحديد كليهما، ستعرض واجهة برمجة التطبيقات
استثناءً.
iOS
أضِف مفتاح واجهة برمجة التطبيقات إلى ملف AppDelegate.swift.
- افتح ملف
ios/Runner/AppDelegate.swiftفي مشروع Flutter باستخدام بيئة التطوير المتكاملة المفضّلة لديك. - أضِف عبارة الاستيراد التالية لإضافة حزمة Google Maps for Flutter إلى تطبيقك:
- أضِف واجهة برمجة التطبيقات إلى طريقة
application(_:didFinishLaunchingWithOptions:)، مع استبدال YOUR_API_KEY بمفتاح واجهة برمجة التطبيقات:GMSServices.provideAPIKey("YOUR_API_KEY") - احفظ ملف
AppDelegate.swiftوأغلِقه.
import GoogleMaps
من المفترض أن يبدو ملف AppDelegate.swift المكتمل على النحو التالي:
import UIKit import Flutter import GoogleMaps // Add this import @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GeneratedPluginRegistrant.register(with: self) // TODO: Add your Google Maps API key GMSServices.provideAPIKey("YOUR_API_KEY") return super.application(application, didFinishLaunchingWithOptions: launchOptions) } }
الويب
أضِف مفتاح واجهة برمجة التطبيقات إلى ملف التطبيق index.html.
- افتح ملف
web/index.htmlفي مشروع Flutter باستخدام بيئة التطوير المتكاملة المفضّلة لديك. - أضِف علامة النص البرمجي التالية ضِمن علامة
<head>، مع استبدالYOUR_API_KEYبمفتاح واجهة برمجة التطبيقات.<script> (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({ key: "YOUR_API_KEY", v: "weekly", // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.). // Add other bootstrap parameters as needed, using camel case. }); </script>
- احفظ ملف
index.htmlوأغلِقه.من المفترض أن يبدو قسم
headالكامل من ملفindex.htmlعلى النحو التالي:<head> <base href="/"> <meta charset="UTF-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="description" content="A new Flutter project."> <!-- iOS meta tags & icons --> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-app-title" content="google_maps_in_flutter"> <link rel="apple-touch-icon" href="icons/Icon-192.png"> <script> (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({ key: "YOUR_API_KEY", v: "weekly", // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.). // Add other bootstrap parameters as needed, using camel case. }); </script> <title>google_maps_in_flutter</title> <link rel="manifest" href="manifest.json"> </head>
الخطوة 5: إضافة خريطة
يوضّح الرمز التالي كيفية إضافة خريطة بسيطة إلى تطبيق Flutter جديد.
- افتح ملف
lib/main.dartفي مشروع Flutter باستخدام بيئة التطوير المتكاملة المفضّلة لديك. - أضِف الطرق أو عدِّلها في الطريقة الرئيسية التلقائية لتطبيقك من أجل إنشاء مثيل من
mapControllerوتهيئته.import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; void main() => runApp(const MyApp()); class MyApp extends StatefulWidget { const MyApp({super.key}); @override State<MyApp> createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { late GoogleMapController mapController; final LatLng _center = const LatLng(-33.86, 151.20); void _onMapCreated(GoogleMapController controller) { mapController = controller; } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: const Text('Maps Sample App'), backgroundColor: Colors.green[700], ), body: GoogleMap( onMapCreated: _onMapCreated, initialCameraPosition: CameraPosition( target: _center, zoom: 11.0, ), ), ), ); } }
- ابدأ أي محاكيات أو أجهزة تريد تشغيل تطبيقك عليها.
- شغِّل تطبيقك. من المفترض أن يظهر لك ناتج يشبه ما يلي:
flutter runMultiple devices found: Android phone (mobile) • emulator-5554 • android-arm64 • Android 13 (API 33) (emulator) iPhone (mobile) • ios • com.apple.CoreSimulator.SimRuntime.iOS-16-2 (simulator) Chrome (web) • chrome • web-javascript • Google Chrome 108.0.5359.124 [1]: Android phone [2]: iPhone [3]: Chrome Please choose one (To quit, press "q/Q"):اكتب رقم النظام الأساسي الذي تريد تشغيله. في كل مرة تستدعي فيها
flutter run، ستعرض عليك Flutter هذه الخيارات. إذا لم يكن نظام التطوير يتضمّن محاكيًا قيد التشغيل أو جهاز اختبار متصلاً، من المفترض أن تختار Flutter فتح Chrome.من المفترض أن يعرض كل نظام أساسي خريطة متمركزة فوق سيدني في أستراليا. إذا لم تظهر لك الخريطة، تأكَّد من إضافة مفتاح واجهة برمجة التطبيقات إلى مشروع النظام الأساسي المستهدَف المناسب.
الخطوات التالية
بعد حصولك على مفتاح واجهة برمجة تطبيقات ومشروع Flutter، يمكنك إنشاء التطبيقات وتشغيلها. توفّر حزمة Google Maps for Flutter العديد من البرامج التعليمية والتطبيقات النموذجية التي يمكن أن تساعدك في البدء. لمزيد من المعلومات، يمكنك الاطّلاع على المَراجع التالية:
- برنامج تعليمي حول إضافة خريطة تتضمّن علامة
- التدريب العملي على الترميز لـ Flutter باستخدام "منصة خرائط Google"
- نماذج الرموز البرمجية على GitHub