- 24 Nis 2021
- 43
- 0
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ı
Ö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ı
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