pickImageWithDimensions static method

Future<ImageSelectionResult?> pickImageWithDimensions()

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;
  }
}