CameraController
- Flutter kursu
- İleri seviye
- Ders 34/69
- 4 dk
CameraController ile fotoğraf çekmeyi öğrenirsin.
CameraController ile fotoğraf
CameraController başlatıldıktan sonra takePicture metodu ile fotoğraf çekilir. Bu metot asenkron bir XFile döndürür. Çekilen fotoğrafın yolu file.path ile alınır.
final file = await controller.takePicture();
print(file.path);dispose metodu
CameraController kullanılmadığında dispose ile kaynakları serbest bırakılır. Kamera donanımı sınırlı kaynak olduğu için controller'ı dispose etmemek bellek ve donanım sızıntısına yol açar. Stateful widget'ların dispose metodunda çağrılır.
@override
void dispose() {
controller.dispose();
super.dispose();
}Uygulama Fotoğraf çek ve yazdır
Bir CameraController oluştur, initialize ile başlat, takePicture ile fotoğraf çek ve dosya yolunu yazdır.
Başlangıç kodu
class CameraDescription {
final String name;
CameraDescription(this.name);
}
enum ResolutionPreset { low, medium, high }
class XFile {
final String path;
XFile(this.path);
}
class CameraController {
final CameraDescription camera;
final ResolutionPreset resolution;
CameraController(this.camera, this.resolution);
Future<void> initialize() async {}
Future<XFile> takePicture() async => XFile('/tmp/photo.png');
void dispose() {}
}
void main() async {
// controller oluştur ve başlat
// fotoğraf çek, dosya yolunu yazdır
// dispose çağır
}Örnek çözüm
class CameraDescription {
final String name;
CameraDescription(this.name);
}
enum ResolutionPreset { low, medium, high }
class XFile {
final String path;
XFile(this.path);
}
class CameraController {
final CameraDescription camera;
final ResolutionPreset resolution;
CameraController(this.camera, this.resolution);
Future<void> initialize() async {}
Future<XFile> takePicture() async => XFile('/tmp/photo.png');
void dispose() {}
}
void main() async {
final controller = CameraController(
CameraDescription('0'),
ResolutionPreset.high,
);
await controller.initialize();
final file = await controller.takePicture();
print(file.path);
controller.dispose();
}Beklenen çıktı
/tmp/photo.png
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 takePicture metodu ne döndürür?
- Future<void>
- Future<XFile> Doğru cevap
- Future<int>
- Future<Widget>
Açıklama: takePicture asenkron bir XFile döndürür; bu dosya çekilen fotoğrafın yolunu içerir.
2 Fotoğraf çek
final file = await controller.____;
final file = await controller.takePicture();
Açıklama: Fotoğraf çekmek için takePicture metodu çağrılır; parantezlerle çağrılır ve await ile beklenir.
3 CameraController parçaları
| Kavram | Anlamı |
|---|---|
takePicture |
Fotoğraf çeker |
XFile |
Çekilen dosya |
dispose |
Kaynakları serbest bırakır |
initialize |
Başlatma |