Flutter projesi oluşturun

Flutter projesi oluşturmadan önce Başlamadan önce bölümündeki ön koşul adımlarını tamamladığınızdan emin olun. Faturalandırmayı etkinleştirip bir API anahtarı oluşturduktan sonra, uygulamanızı geliştirmek için kullandığınız Flutter projesini ayarlayabilirsiniz.

1. adım: Gerekli yazılımı yükleyin

Flutter için Google Haritalar paketini kullanarak bir proje oluşturmak istiyorsanız Flutter SDK'yı yüklemeniz ve hedef platformunuz için geliştirme ortamınızı ayarlamanız gerekir. Ayrıntılar için Flutter yükleme kılavuzuna göz atın.

2. adım: Flutter için Google Haritalar paketini yeni bir projeye yükleyin

Flutter, Flutter için Google Haritalar paketini Flutter eklentisi olarak sunar.

Flutter projesini oluşturun ve Haritalar eklentisini ekleyin.

  1. `flutter create` komutunu kullanarak yeni bir Flutter projesi oluşturun:
      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!
    Uygulama kodunuz google_maps_in_flutter/lib/main.dart içinde. Uygulamanızı çalıştırmak için şunu yazın:
      cd google_maps_in_flutter
      flutter run
    Bu uygulama iOS, Android ve web'i hedefliyor. Google Haritalar SDK'sı şu anda tarayıcı dışındaki masaüstü uygulamalarını desteklememektedir.
  2. Bu projeye Flutter için Google Haritalar paket eklentisini ekleyin.
    flutter pub add google_maps_flutter
      
      Resolving dependencies...
      [Listing of dependencies elided]
    
      Changed 14 dependencies!

3. adım: Platform sürümünü ayarlayın

Android

Android için minimum SDK sürümünü ayarlayın.

  1. android/app/build.gradle yapılandırma dosyasını tercih ettiğiniz IDE'de açın.
  2. android.defaultConfig.minSdkVersion değerini 21 olarak değiştirin:
      android {
        //...
        defaultConfig {
            applicationId "com.example.google_maps_in_flutter"
            minSdkVersion 21     // Set to 21
            targetSdkVersion flutter.targetSdkVersion
            versionCode flutterVersionCode.toInteger()
            versionName flutterVersionName
        }
        //...
      }
  3. defaultConfig yapılandırırken kendi benzersiz ApplicationID değerinizi belirtin.
  4. Proje değişikliklerinizi Gradle ile senkronize edin.

iOS

Minimum iOS platform sürümünü ayarlayın.

  1. ios/Podfile yapılandırma dosyasını tercih ettiğiniz IDE'de açın.
  2. Bu Podfile'ın başına aşağıdaki satırları ekleyin:
      # Set platform to 14.0 to enable latest Google Maps SDK
      platform :ios, '14.0'

4. adım: API anahtarınızı projeye ekleyin

Başlamadan önce bölümünde uygulamanız için bir API anahtarı oluşturmuştunuz. Şimdi bu anahtarı Flutter projenize ekleyin. Flutter için bu API anahtarını tüm hedef platformlara (iOS, Android ve Web) eklemeniz gerekir.

Aşağıdaki örneklerde YOUR_API_KEY kısmını API anahtarınızla değiştirin.

Android

Bu görevi kolaylaştırmak için Android İçin Secrets Gradle Plugin'i kullanmanızı öneririz.

Android için Secrets Gradle Plugin'i yüklemek ve API anahtarınızı depolamak için:

  1. Android Studio'da, kök düzeyindeki build.gradle dosyanızı açın ve buildscript altındaki dependencies öğesine aşağıdaki kodu ekleyin.

    Modern

    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. Uygulama düzeyindeki build.gradle dosyanızı açın ve aşağıdaki kodu plugins öğesine ekleyin.

    Modern

    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 Studio kullanıyorsanız projenizi Gradle ile senkronize edin.
  4. Proje düzeyindeki dizininizde local.properties dosyasını açın ve aşağıdaki kodu ekleyin. YOUR_API_KEY kısmını API anahtarınızla değiştirin.
    MAPS_API_KEY=YOUR_API_KEY
  5. AndroidManifest.xml dosyanızda com.google.android.geo.API_KEY bölümüne gidin ve android:value özelliğini aşağıdaki gibi güncelleyin:
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${MAPS_API_KEY}" />
        

    Not: API anahtarı için önerilen meta veri adı com.google.android.geo.API_KEY'dir. Bu ada sahip bir anahtar, Flutter SDK'sı da dahil olmak üzere Android platformundaki birden fazla Google Haritalar tabanlı API'de kimlik doğrulaması yapmak için kullanılabilir. API, geriye dönük uyumluluk için com.google.android.maps.v2.API_KEY adını da destekler. Bu eski ad yalnızca Android Maps API v2'de kimlik doğrulamasına izin verir. Bir uygulama yalnızca API anahtarı meta veri adlarından birini belirtebilir. Her ikisi de belirtilirse API bir istisna oluşturur.

Not: Yukarıda gösterildiği gibi, API anahtarı için önerilen meta veri adı com.google.android.geo.API_KEY'dır. Bu ada sahip bir anahtar, Flutter SDK'sı da dahil olmak üzere Android platformundaki birden fazla Google Haritalar tabanlı API'de kimlik doğrulaması yapmak için kullanılabilir. API, geriye dönük uyumluluk için com.google.android.maps.v2.API_KEY adını da destekler. Bu eski ad, yalnızca Android Maps API v2'de kimlik doğrulamasına izin verir. Bir uygulama yalnızca API anahtarı meta veri adlarından birini belirtebilir. Her ikisi de belirtilirse API bir istisna oluşturur.

iOS

API anahtarınızı AppDelegate.swift dosyanıza ekleyin.

  1. Flutter projenizdeki ios/Runner/AppDelegate.swift dosyasını tercih ettiğiniz IDE ile açın.
  2. Flutter için Google Haritalar paketini uygulamanıza eklemek üzere aşağıdaki içe aktarma ifadesini ekleyin:
  3. import GoogleMaps
  4. API'nizi application(_:didFinishLaunchingWithOptions:) yönteminize ekleyin ve YOUR_API_KEY yerine API anahtarınızı kullanın:
    GMSServices.provideAPIKey("YOUR_API_KEY")
  5. AppDelegate.swift dosyasını kaydedip kapatın.

Tamamlanan AppDelegate.swift dosyası aşağıdaki gibi görünmelidir:

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)
  }
}

Web

API anahtarınızı index.html uygulama dosyanıza ekleyin.

  1. Flutter projenizdeki web/index.html dosyasını tercih ettiğiniz IDE ile açın.
  2. <head> etiketi içine aşağıdaki komut dosyası etiketini ekleyin ve YOUR_API_KEY yerine API anahtarınızı girin.
    <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 dosyasını kaydedip kapatın.

    index.html bölümünün head kısmı aşağıdaki gibi olmalıdır:

        <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. adım: Harita ekleme

Aşağıdaki kodda, yeni bir Flutter uygulamasına basit bir haritanın nasıl ekleneceği gösterilmektedir.

  1. Flutter projenizdeki lib/main.dart dosyasını tercih ettiğiniz IDE ile açın.
  2. mapController örneği oluşturmak ve başlatmak için uygulamanızın varsayılan ana yöntemine yöntemler ekleyin veya bu yöntemleri güncelleyin.
          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. Uygulamanızı çalıştırmak istediğiniz tüm emülatörleri veya cihazları başlatın.
  4. Uygulamanızı çalıştırın. Şuna benzer bir çıkış alırsınız:
      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"): 

    Çalıştırmak istediğiniz platformun numarasını yazın. flutter run komutunu her çağırdığınızda Flutter size bu seçenekleri sunar. Geliştirme sisteminizde çalışan bir emülatör veya bağlı bir test cihazı yoksa Flutter, Chrome'u açmayı seçmelidir.

    Her platformda, Avustralya'nın Sidney şehri üzerinde ortalanmış bir harita gösterilmelidir. Haritayı görmediyseniz API anahtarınızı uygun hedef projeye eklediğinizden emin olun.

Sonraki adımlar

Artık bir API anahtarınız ve Flutter projeniz olduğuna göre uygulamalar oluşturup çalıştırabilirsiniz. Flutter için Google Haritalar paketi, başlamanıza yardımcı olabilecek birçok eğitim ve örnek uygulama sunar. Daha fazla bilgi edinmek için aşağıdaki kaynakları inceleyin: