راه‌اندازی پروژه Flutter

قبل‌از راه‌اندازی پروژه Flutter، مطمئن شوید که مراحل پیش‌نیاز را در بخش قبل‌از شروع تکمیل کرده‌اید. پس‌از فعال کردن صورت‌حساب و ایجاد کلید میانای برنامه‌سازی کاربردی، می‌توانید پروژه Flutter را که برای توسعه برنامه خود استفاده می‌کنید راه‌اندازی کنید.

مرحله ۱: نصب نرم‌افزار موردنیاز

برای ساختن پروژه بااستفاده از بسته Google Maps for Flutter، باید Flutter SDK را نصب کنید و محیط توسعه خود را برای پلاتفرم هدف راه‌اندازی کنید. برای جزئیات، راهنمای نصب Flutter را بررسی کنید.

مرحله ۲: نصب بسته Google Maps برای Flutter در پروژه جدید

‫Flutter بسته Google Maps for Flutter را به‌عنوان افزایه Flutter ارائه می‌دهد.

پروژه Flutter را ایجاد کنید و افزونه Maps را اضافه کنید.

  1. بااستفاده از `flutter create`، پروژه Flutter جدیدی ایجاد کنید:
      flutter create google_maps_in_flutter --platforms=android,ios,web
      
      Creating project google_maps_in_flutter...
      [Listing of created files elided]
      Wrote 127 files.
    
      All done!
    کد درخواست شما در google_maps_in_flutter/lib/main.dart است. برای اجرای برنامه، تایپ کنید:
      cd google_maps_in_flutter
      flutter run
    این برنامه iOS،‏ Android، و وب را هدف‌یابی می‌کند. درحال‌حاضر «کیت توسعه نرم‌افزار Google Maps» از برنامه‌های رایانه‌ای خارج از مرورگر پشتیبانی نمی‌کند.
  2. افزایه بسته Google Maps for Flutter را به این پروژه اضافه کنید.
    flutter pub add google_maps_flutter
      
      Resolving dependencies...
      [Listing of dependencies elided]
    
      Changed 14 dependencies!

مرحله ۳: تنظیم نسخه پلاتفرم

Android

حداقل نسخه کیت توسعه نرم‌افزار را برای Android تنظیم کنید.

  1. فایل پیکربندی android/app/build.gradle را در IDE ترجیحی‌تان باز کنید.
  2. مقدار 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
        }
        //...
      }
  3. هنگام پیکربندی defaultConfig، ApplicationID یکتای خودتان را مشخص کنید.
  4. تغییرات پروژه را با Gradle همگام‌سازی کنید.

iOS

حداقل نسخه پلاتفرم iOS را تنظیم کنید.

  1. فایل پیکربندی ios/Podfile را در IDE ترجیحی‌تان باز کنید.
  2. خطوط زیر را به ابتدای این Podfile اضافه کنید:
      # Set platform to 14.0 to enable latest Google Maps SDK
      platform :ios, '14.0'

مرحله ۴: افزودن کلید میانای API به پروژه

در بخش پیش‌از شروع، کلید میانای برنامه‌سازی کاربردی برای برنامه‌تان تولید کردید. اکنون آن کلید را به پروژه Flutter خود اضافه کنید. برای Flutter، باید این کلید API را به همه پلاتفرم‌های هدف اضافه کنید: iOS،‏ Android، و «وب».

در مثال‌های زیر، YOUR_API_KEY را با کلید میانای API خودتان جایگزین کنید.

Android

برای ساده‌سازی این کار، توصیه می‌کنیم از افزایه Secrets Gradle ویژه Android استفاده کنید.

برای نصب افزایه Secrets Gradle ویژه Android و ذخیره کلید میانای برنامه‌سازی کاربردی:

  1. در Android Studio، فایل 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")
        }
    }
  2. فایل 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")
    }
  3. اگر از «استودیو Android» استفاده می‌کنید، پروژه‌تان را با Gradle همگام‌سازی کنید.
  4. فایل local.properties را در فهرست سطح پروژه باز کنید، و سپس کد زیر را اضافه کنید. YOUR_API_KEY را با کلید میانای برنامه‌سازی کاربردی خود جایگزین کنید.
    MAPS_API_KEY=YOUR_API_KEY
  5. در فایل 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 نام فراداده توصیه‌شده برای کلید API است. از کلیدی با این نام می‌توان برای اصالت‌سنجی در چندین میانای برنامه‌سازی کاربردی مبتنی بر Google Maps در پلاتفرم Android، ازجمله Flutter SDK، استفاده کرد. برای سازگاری با نسخه قدیمی، این میانای برنامه‌سازی کاربردی از نام com.google.android.maps.v2.API_KEY نیز پشتیبانی می‌کند. این نام قدیمی فقط اصالت‌سنجی را برای Android Maps API v2 امکان‌پذیر می‌کند. برنامه فقط می‌تواند یکی از نام‌های فراداده کلید میانای برنامه‌سازی کاربردی را مشخص کند. اگر هر دو مشخص شده باشند، میانای برنامه‌سازی کاربردی استثنایی را ایجاد می‌کند.

توجه: همان‌طور که در بالا نشان داده شده است، com.google.android.geo.API_KEY نام فراداده توصیه‌شده برای کلید API است. از کلیدی با این نام می‌توان برای اصالت‌سنجی در چندین میانای برنامه‌سازی کاربردی مبتنی بر Google Maps در پلاتفرم Android، ازجمله Flutter SDK، استفاده کرد. برای سازگاری با نسخه قدیمی، این میانای برنامه‌سازی کاربردی از نام com.google.android.maps.v2.API_KEY نیز پشتیبانی می‌کند. این نام قدیمی فقط امکان اصالت‌سنجی در Android Maps API v2 را فراهم می‌کند. برنامه فقط می‌تواند یکی از نام‌های فراداده کلید میانای برنامه‌سازی کاربردی را مشخص کند. اگر هر دو مشخص شده باشند، API استثنایی را ایجاد می‌کند.

iOS

کلید میانای برنامه‌سازی کاربردی خود را به فایل AppDelegate.swift اضافه کنید.

  1. فایل ios/Runner/AppDelegate.swift را در پروژه Flutter خود با IDE ترجیحی‌تان باز کنید.
  2. بیانیه وارد کردن زیر را اضافه کنید تا بسته Google Maps for Flutter به برنامه‌تان اضافه شود:
  3. import GoogleMaps
  4. میانای برنامه‌سازی کاربردی‌تان را به روش application(_:didFinishLaunchingWithOptions:) اضافه کنید و کلید میانای برنامه‌سازی کاربردی‌تان را جایگزین YOUR_API_KEY کنید:
    GMSServices.provideAPIKey("YOUR_API_KEY")
  5. فایل AppDelegate.swift را ذخیره کنید و ببندید.

فایل 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 اضافه کنید.

  1. فایل web/index.html را در پروژه Flutter خود با IDE ترجیحی‌تان باز کنید.
  2. برچسب دستورگان زیر را در برچسب <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>
  3. فایل 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>

مرحله ۵: افزودن نقشه

کد زیر نحوه افزودن نقشه‌ای ساده به برنامه Flutter جدید را نشان می‌دهد.

  1. فایل lib/main.dart را در پروژه Flutter خود با IDE ترجیحی‌تان باز کنید.
  2. برای ایجاد و مقداردهی اولیه نمونه‌ای از 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,
                    ),
                  ),
                ),
              );
            }
          }
  3. هر شبیه‌ساز یا دستگاهی را که می‌خواهید برنامه‌تان را در آن اجرا کنید شروع کنید.
  4. برنامه را اجرا کنید. باید بروندادی شبیه به موارد زیر ببینید:
      flutter run
    
       
        Multiple 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 را برای باز کردن انتخاب کند.

    هر پلاتفرم باید نقشه‌ای را نمایش دهد که مرکز آن سیدنی، استرالیا باشد. اگر نقشه را ندیدید، بررسی کنید که کلید میانای برنامه‌سازی کاربردی را به پروژه هدف مناسب اضافه کرده باشید.

مراحل بعدی

اکنون که کلید میانای API و پروژه Flutter دارید، می‌توانید برنامه ایجاد و اجرا کنید. بسته Google Maps for Flutter آموزش‌های گام‌به‌گام و برنامه‌های نمونه زیادی ارائه می‌دهد که می‌تواند به شما در شروع کار کمک کند. برای اطلاعات بیشتر، منابع زیر را بررسی کنید: