captureImage static method

Future<String?> captureImage({
  1. required BuildContext context,
  2. required bool fromCamera,
  3. String? fileType,
  4. int? sizeLimit,
  5. required List uniqueNameList,
})

Implementation

static Future<String?> captureImage({
  required BuildContext context,
  required bool fromCamera,
  String? fileType,
  int? sizeLimit,
  required List<dynamic> uniqueNameList,
}) async {
  OtherFunctions.hideKeyboard();
  File picture = File('');

  if (fromCamera) {
    try {
      WidgetsFlutterBinding.ensureInitialized();

      final cameras = await availableCameras();
      // picture = await Navigator.of(context).push(MaterialPageRoute(
      //     builder: (context) => CameraPage(cameras: cameras)));
      XFile? xFile = await Navigator.of(context).push(MaterialPageRoute(
          builder: (context) => CameraPage(cameras: cameras)));


      picture = File(xFile?.path ?? '');
    } catch (e) {
      print('Failed to capture image: $e');
    }
  } else {

    if(kIsWeb){
      const XTypeGroup typeGroup = XTypeGroup(
        label: 'images',
        extensions: <String>['jpg'],
      );
      final XFile? file =
      await openFile(acceptedTypeGroups: <XTypeGroup>[typeGroup]);
      // #enddocregion SingleOpen
      final String fileName = file!.name;
      final String filePath = file.path;
      print("Android $filePath/${fileName}");
      picture = File(filePath);

    }else{
      try {
        FilePickerResult? result =
        await FilePicker.platform.pickFiles(type: FileType.image);
        if (result != null) {
          PlatformFile file = result.files.first;
          picture = File(file.path!);
        }
      } catch (e) {
        print('Failed to pick image: $e');
      }
    }





  }

  // picture =
  //     await renameImage(picture: picture, uniqueNameList: uniqueNameList) ??
  //         File('');

  // print('picture.path: $picture');

  if(!kIsWeb){
  if (picture != File('') &&
      (fileType != null && fileType.trim() != '' || sizeLimit != null)) {
    picture = await changeFormatAndCompressImage(
            image: picture,
            format: fileType?.trim().toLowerCase() ?? 'jpeg',
            sizeLimit: sizeLimit!) ??
        File('');
  }}
  print('picture.path:: ${picture.path}');
  //deleteImagePath([]);

  return picture.path;
}