Emulatorde gördüğünüz yol, gerçekte cihazınızda bulunan dosya yoluyla farklı olabilir. Bu nedenle, dosya yolunu doğru şekilde elde etmek için birkaç şeyi kontrol etmeniz gerekir.
Flutter'da Image Picker kullanıyorsanız, seçilen görüntü, önbellekte bir dosya olarak saklanır. Bu dosya, önbellek dosyalarının bulunduğu bir konuma kaydedilir. Bu konum, 'getTemporaryDirectory()' fonksiyonu tarafından döndürülen yol tarafından temsil edilir. Bu yolu kullanarak resmin yolunu bulabilirsiniz.
Aşağıdaki örnek kodda, getImage() fonksiyonunuzun içinde birkaç değişiklik yaparak resmin yolunu alabilirsiniz:
import 'package:path_provider/path_provider.dart'; // Path provider kütüphanesi ekleyin
Future getImage(ImageSource source) async {
final image = await ImagePicker().pickImage(source: source);
if (image == null) return;
final tempDir = await getTemporaryDirectory(); // Önbellek dizini yolunu alın
final imageTemporary = io.File('${tempDir.path}/${DateTime.now().toString()}.jpg'); // Önbellek dizininde yeni bir dosya oluşturun ve adını resim dosyasının adıyla ayarlayın
await imageTemporary.writeAsBytes(await image.readAsBytes()); // Görüntüyü bu dosyaya kaydedin
setState(() {
this._image = imageTemporary;
print(_image!.path);
});
}Bu kod, önbellek dizini içinde yeni bir dosya oluşturur ve seçilen resmi bu dosyaya kaydeder. Dosya yolunu da _image!.path kullanarak yazdırır.
Önbellek dosyaları genellikle uygulama kullanımı sırasında saklandıkları için, dosyanın otomatik olarak silinmesi için herhangi bir işlem yapmanıza gerek yoktur. Bununla birlikte, resmi kalıcı bir yere kaydetmek isterseniz, dosyayı farklı bir konuma taşıyabilirsiniz.
Chatgpt'ye sordum hocam, işinize yarar mı emin değilim