أعاني بعض السلوك الغريب حول الصور في رفرفة.
أستخدم حزمة الكاميرا لالتقاط صور مثل ذلك:
void _takePicture() {
_controller.takePicture(_tempImagePath).then((_) {
setState(() {
_captured = true;
_shutterButtonController.forward();
_acceptCancelController.forward();
});
});
}
واضحة جدًا - يتم التقاط الصورة بالطريقة التي أتوقعها. إذا لاحظت _captured
عضو ، أنا أستخدم هذا لدفع عرض معاينة الكاميرا أو الصورة الملتقطة. هنا مقتطف من شجرة القطعة الخاصة بي:
...
AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: _captured
? Image.file(File(_tempImagePath))
: CameraPreview(_controller)),
...
يتصرف هذا أيضًا كما أتوقع - يتم عرض الصورة بعد التقاطها. ومع ذلك ، يبدو أن الصيد هو ذلك Image.file(...)
سيعرض دائمًا نفس الصورة. لقد جربت عددًا من الطرق لحذف هذه الصورة ، وأعتقد أنها تعمل ، ومع ذلك تستمر الصورة بطريقة أو بأخرى.
أنا في المرحلة التي أحذف فيها وأعيد إنشاء الدليل بأكمله داخل initState()
كما يتم إنشاء الشاشة على هذا النحو:
Future<String> get getTempImageDirectory async {
final directory = await getApplicationDocumentsDirectory();
var imageDirectory = Directory(directory.path + '/images/');
print('The image directory ${imageDirectory.path} exists: ${imageDirectory.existsSync()}');
if (imageDirectory.existsSync()) {
imageDirectory.deleteSync(recursive: true);
}
imageDirectory.createSync();
return imageDirectory.path;
}
حتى مع هذا ، أو حذف الصور يدويًا بالاسم ، تستمر الصورة التي تم التقاطها في الأصل داخل الأداة التي تم إنشاؤها بواسطة Image.file(...)
. أنا متأكد تمامًا من أن الحذف يعمل بشكل جيد - ستظهر واجهة برمجة تطبيقات الكاميرا خطأً حيث لا يمكن استبدال الصورة السابقة إذا لم تحذفها.
أخيرًا ، إذا قمت بقتل التطبيق وإعادة التشغيل ، فسوف أتمكن من استعادة الصورة ورؤية صورة جديدة ، ولكن مرة أخرى ، ستبقى هذه الصورة حتى يتم قتل التطبيق بالكامل. يبدو أن الصورة مخبأة بطريقة أو بأخرى؟
أنا جديد تمامًا على Flutter و Dart ، لذلك نقدر أي مساعدة.