This is my method for taking a picture:

handleTakePhoto() async {
 Navigator.pop(context);
 XFile? file = await ImagePicker()
    .pickImage(source: ImageSource.camera, maxWidth: 960, maxHeight: 675);
 setState(() {
   this.file = file;
   bytes = File(file!.path).readAsBytesSync();
 });
}

while this is the one for taking a video:

handleTakeVideo() async {
 Navigator.pop(context);
 XFile? file = await ImagePicker()
     .pickVideo(source: ImageSource.camera, maxDuration: const Duration(seconds: 10));
 setState(() {
   this.file = file;
   bytes = File(file!.path).readAsBytesSync();
 });
}

As you can see they are pratically identical, but later on my program I need to know if file is an image or a video. How can I do?


Solution 1: david okoroafor

They method for taking pictures and video might be identical but the image file and video file are not identical, the contain different file extensions. an image file will either be .jpg, .jpeg or .png. you can print the file path to see these yourself. print(file.path). check out this Flutter: Is the file an image or not? to help differentiate them.