v_platform 2.1.4 copy "v_platform: ^2.1.4" to clipboard
v_platform: ^2.1.4 copied to clipboard

VPlatformFile is a Dart package that provides easy handling of files from paths, URLs, assets, and bytes, with utilities for metadata, MIME type, and serialization support.

VPlatformFile #

VPlatformFile is a flexible Dart package that helps manage files from various sources, including local paths, byte arrays, URLs, and asset files. This package provides utility methods for handling file metadata, MIME types, media types, and file size information in a straightforward and efficient way.

Features #

  • File Handling from Multiple Sources: Supports files from local paths, URLs, assets, and byte arrays.
  • File Metadata Access: Easily retrieve file properties such as name, MIME type, file size, and extension.
  • Hash Generation: Unique hash generation based on file attributes to help with caching and unique identification.
  • Media Type Detection: Automatically detects if a file is an image, video, or other file type.
  • Human-Readable File Size: Provides file size in a human-readable format (e.g., KB, MB).
  • Serialization Support: Convert files to and from Map objects for easy storage and transfer.

Installation #

Add this package to your pubspec.yaml:

dependencies:
  v_platform_file: ^1.0.0

Then, install the package by running:

flutter pub get

Usage #

Importing the Package #

import 'package:v_platform_file/v_platform_file.dart';

Creating a VPlatformFile Instance #

You can create a VPlatformFile instance using one of the following constructors based on your file source:

From Local Path

Create a file instance from a local path. This constructor automatically reads the file size and computes a unique hash.

final file = VPlatformFile.fromPath(fileLocalPath: '/path/to/your/file.jpg');
print(file.name); // Output: file.jpg
print(file.fileSize); // Output: size in bytes

From URL

Create a file instance from a URL. The file name and hash are derived from the URL.

final file = VPlatformFile.fromUrl(networkUrl: 'https://example.com/file.jpg');
print(file.name); // Output: file.jpg
print(file.networkUrl);  // Output: Full URL

From Byte Array

Create a file instance from a byte array. The file size and hash are generated based on the byte content.

final file = VPlatformFile.fromBytes(name: 'myfile.png', bytes: [/* file bytes */]);
print(file.name); // Output: myfile.png
print(file.fileSize); // Output: byte array size

From Assets

Create a file instance from an asset file.

final file = VPlatformFile.fromAssets(assetsPath: 'assets/myfile.png');
print(file.name); // Output: myfile.png
print(file.isFromAssets); // Output: true

Accessing File Properties #

The VPlatformFile class provides several useful properties:

  • File Name: file.name
  • File Size: file.fileSize (in bytes)
  • MIME Type: file.mimeType
  • File Extension: file.extension
  • Is From Path: file.isFromPath
  • Is From Bytes: file.isFromBytes
  • Is From URL: file.isFromUrl
  • Readable File Size: file.readableSize (e.g., "10 MB")
  • File Hash: file.fileHash

Checking Media Type #

The mediaType property allows you to identify if the file is an image, video, or a generic file type:

if (file.isContentImage) {
  print("This file is an image.");
} else if (file.isContentVideo) {
  print("This file is a video.");
} else {
  print("This is a general file.");
}

Converting to and from Map #

VPlatformFile supports conversion to and from a Map for easy serialization, making it suitable for caching or database storage.

Convert to Map

final fileMap = file.toMap();
print(fileMap);

Convert from Map

final fileFromMap = VPlatformFile.fromMap(fileMap);
print(fileFromMap.name);

Example #

Here’s a complete example that demonstrates creating a VPlatformFile instance from a local path, accessing its properties, and converting it to and from a Map.

import 'package:v_platform_file/v_platform_file.dart';

void main() {
  // Create a VPlatformFile from a local path
  final file = VPlatformFile.fromPath(fileLocalPath: '/path/to/file.jpg');
  
  // Access properties
  print("File Name: \${file.name}");
  print("File Size: \${file.readableSize}");
  print("MIME Type: \${file.mimeType}");
  
  // Check if it is an image or video
  if (file.isContentImage) {
    print("This is an image file.");
  }
  
  // Convert to Map
  final fileMap = file.toMap();
  print("File as Map: \$fileMap");
  
  // Convert back from Map
  final fileFromMap = VPlatformFile.fromMap(fileMap);
  print("File Name from Map: \${fileFromMap.name}");
}

Setting Global Base URL #

You can set a global base URL for all files with a URL source using VPlatformFileUtils.baseMediaUrl. This is helpful when you need a common URL prefix.

VPlatformFileUtils.baseMediaUrl = "https://yourmediaurl.com/";

Contributing #

Contributions are welcome! If you have suggestions or find any issues, please feel free to open an issue or submit a pull request on GitHub.

License #

This package is released under the MIT License. See the LICENSE file for details.

2
likes
150
pub points
80%
popularity

Publisher

unverified uploader

VPlatformFile is a Dart package that provides easy handling of files from paths, URLs, assets, and bytes, with utilities for metadata, MIME type, and serialization support.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

crypto, file_sizes, flutter, http, http_parser, mime, mime_type, path, universal_html

More

Packages that depend on v_platform