Last updated:
0 purchases
fp resumable uploads
Flutter Resumable Video Uploads #
The FlutterResumableUploads package provides functionality for uploading large video files in chunks, allowing for pausing and resuming uploads as needed. This is particularly useful for ensuring upload reliability over unstable network connections.
Features #
Chunked Uploads: Split large video files into manageable chunks for upload.
Resumable Uploads: Pause and resume uploads to handle network interruptions.
Progress Tracking: Monitor upload progress with customizable callbacks.
Error Handling: Handle errors gracefully with customizable callbacks.
Installation #
Add the package to your pubspec.yaml file:
dependencies:
flutter_resumable_uploads: ^0.0.2
copied to clipboard
Then, run flutter pub get to fetch the package.
Usage #
Import the Package #
import 'package:flutter_resumable_uploads/flutter_resumable_uploads.dart';
copied to clipboard
Exposed Methods #
uploadVideo
This method initiates the upload process by splitting the video file into chunks and uploading each chunk sequentially.
Parameters:
file (File): The video file to be uploaded.
signedUrl (String): The URL to obtain signed URLs for each chunk.
chunkSize (int?): The size of each chunk in megabytes (default is 15 MB).
onProgress (Function?): A callback function to track progress updates.
onError (Function?): A callback function to handle errors.
Example:
import 'dart:io';
import 'package:flutter_resumable_uploads/flutter_resumable_uploads.dart';
void main() async {
File videoFile = File('path_to_your_video_file.mp4');
String signedUrl = 'your_signed_url';
await FlutterResumableUploads.uploadVideo(
file: videoFile,
signedUrl: signedUrl,
chunkSize: 15,
onProgress: (progress) {
print('Progress: $progress');
},
onError: (error) {
print('Error: $error');
},
);
}
copied to clipboard
pauseUpload
Pauses the current upload process. Useful for handling temporary network interruptions or user-initiated pauses.
Example:
FlutterResumableUploads.pauseUpload();
copied to clipboard
resumeUpload
Resumes a previously paused upload process from where it left off.
Example:
FlutterResumableUploads.resumeUpload();
copied to clipboard
Example Usage #
Here's a complete example demonstrating how to use the FlutterResumableUploads package to upload a video, and pause/resume the upload.
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_resumable_uploads/flutter_resumable_uploads.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: UploadPage(),
);
}
}
class UploadPage extends StatefulWidget {
@override
_UploadPageState createState() => _UploadPageState();
}
class _UploadPageState extends State<UploadPage> {
String progress = 'Not Started';
void startUpload() async {
File videoFile = File('path_to_your_video_file.mp4');
String signedUrl = 'your_signed_url';
await FlutterResumableUploads.uploadVideo(
file: videoFile,
signedUrl: signedUrl,
chunkSize: 15,
onProgress: (prog) {
setState(() {
progress = prog;
});
},
onError: (error) {
setState(() {
progress = 'Error: $error';
});
},
);
}
void pauseUpload() {
FlutterResumableUploads.pauseUpload();
setState(() {
progress = 'Paused';
});
}
void resumeUpload() {
FlutterResumableUploads.resumeUpload();
setState(() {
progress = 'Resumed';
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Video Upload'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Progress: $progress'),
ElevatedButton(
onPressed: startUpload,
child: Text('Start Upload'),
),
ElevatedButton(
onPressed: pauseUpload,
child: Text('Pause Upload'),
),
ElevatedButton(
onPressed: resumeUpload,
child: Text('Resume Upload'),
),
],
),
),
);
}
}
copied to clipboard
Testing #
This package includes a suite of tests to ensure functionality. You can run the tests using the following command:
flutter test test/flutter_resumable_uploads_test.dart
copied to clipboard
Contributions #
Contributions are welcome! Please submit a pull request or open an issue to discuss your changes.
License #
This project is licensed under the MIT License - see the LICENSE file for details.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.