İmage Picker Kullanımı

CanaBBis

Yeni üye
24 Nis 2021
43
0



sb24p8.png



Merhaba değerli TürkHackTeam ailesi bugün ki konumuzda sizlere Kullanıcı Girişli Blog Uygulaması konumuzun üçüncü bölümüne ait olacak İmage Picker kullanımından bahsedeceğim.




İmage Picker Kullanımı
cx5pw9.gif


Önce Firebase'de, Storage sekmesine giderek bir veritabanı oluşturuyoruz.

Sonra aşağıdaki adreslerden Image Picker ve Firebase Storage paketlerinin son sürümünü öğrenip Flutter projemize ekliyoruz.

https://pub.dev/packages/image_picker

https://pub.dev/packages/firebase_storage

pubspec.yaml dosyası


2020-10-06_16-24-41-80c5bfd40e490e8404c03241fd210d8a.png



Daha sonra üzerinde çalıştığımız dart dosyasına import ediyoruz.

Kod:
import 'package:firebase_storage/firebase_storage.dart';
import 'package:image_picker/image_picker.dart';


Aşağıdaki değişkenleri tanımlıyoruz:

Kod:
File yuklenecekDosya; // Kameradan aldığımız dosyayı tutacak kalıcı değişken.
  FirebaseAuth auth = FirebaseAuth.instance; // Kullanıcı id'sini almak için.
  String indirmeBaglantisi; // Storage'daki resmin url bağlantısını tutacak.


Aşağıdaki fonksiyon kameradan resim almamızı ve Firebase Storage'e yüklememizi sağlıyor. Ardından da indirme bağlantısını alarak url isminde bir değişkene atıyor. Yüklenen fotoğrafı alıp uygulamada göstermek istersek bu url'i kullanabiliriz.

Kodların açıklamaları ilgili kodun üstündedir.




Kod:
v oi d kameradanYukle() async {
   

     // ImagePicker ile kameradan resim alıyoruz.
    // camera yerine gallery yazarak galeriden de resim alabiliriz.
    var alinanDosya = await ImagePicker().getImage(source: ImageSource.camera);

    /* Kameradan aldığımız resmin dosya yolunu vererek, daha önce File tipinde
       tanımladığımız değişkene dosya olarak atadık. */
    setState(() {
      yuklenecekDosya = File(alinanDosya.path);
    });

    // Bu dosyayı şimdi Firebase Storage'e yüklüyoruz.
    // child ile kasör ve belge isimlerini veriyoruz.
    StorageReference referansYol = FirebaseStorage.instance
        .ref()
        .child("profilresimleri")
        /* Eğer Firebase Auth kullanırsanız klasör ismi olarak
           kullanıcı id'sini veya e-posta adresini vermeniz de 
           mümkün olur. */
        .child(auth.currentUser.uid)
        .child("profilResmi.png");

    // Yükleme görevi oluşturarak dosyayı referans yoluna koyuyoruz.
    StorageUploadTask yuklemeGorevi = referansYol.putFile(yuklenecekDosya);

    // url'i alıp geçici değişkene atıyoruz.
    String url = await (await yuklemeGorevi.onComplete).ref.getDownloadURL();

    setState(() {
      indirmeBaglantisi = url;
    });
  }




Kodun saf hâli:

Kod:
kameradanYukle() async {
    var alinanDosya = await ImagePicker().getImage(source: ImageSource.camera);
    setState(() {
      yuklenecekDosya = File(alinanDosya.path);
    });

    StorageReference referansYol = FirebaseStorage.instance
        .ref()
        .child("profilresimleri")
        .child(auth.currentUser.uid)
        .child("profilResmi.png");

    StorageUploadTask yuklemeGorevi = referansYol.putFile(yuklenecekDosya);
    String url = await (await yuklemeGorevi.onComplete).ref.getDownloadURL();

    setState(() {
      indirmeBaglantisi = url;
    });
  }


Bir konunun daha sonuna geldik bir sonraki konuda görüşmek üzere..Esen kalın

 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.