pickImageWithDimensions static method
Implementation
static Future<ImageSelectionResult?> pickImageWithDimensions() async {
try {
print('FilePickerService: Starting pickImageWithDimensions');
// Create file input
final html.InputElement input = html.InputElement();
input.type = 'file';
input.accept = 'image/*';
print('FilePickerService: Created input element, clicking...');
// Show file dialog
input.click();
// Wait for file selection with improved timeout handling
final html.File? file = await _waitForFileSelection(input);
print('FilePickerService: File selection result: $file');
if (file == null) {
print('FilePickerService: No file selected or cancelled');
return null;
}
print('FilePickerService: Converting file to data URL...');
// Convert to data URL
final String dataUrl = await _convertFileToDataUrl(file);
print('FilePickerService: Data URL created, length: ${dataUrl.length}');
// Get image dimensions
print('FilePickerService: Getting image dimensions...');
final dimensions = await _getImageDimensions(dataUrl);
print(
'FilePickerService: Image dimensions: ${dimensions['width']}x${dimensions['height']}',
);
return ImageSelectionResult(
dataUrl: dataUrl,
width: dimensions['width']!,
height: dimensions['height']!,
);
} catch (e) {
print('FilePickerService: Error picking image: $e');
return null;
}
}