ma_ng_file_uploader 0.0.5
ma_ng_file_uploader: ^0.0.5 copied to clipboard
Mariapps Internal Package to build Flutter apps faster
example/lib/main.dart
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:dio/dio.dart';
import 'package:file_picker/file_picker.dart';
import 'package:ma_ng_file_uploader/ma_ng_file_uploader.dart'; // import your plugin
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'File Uploader Example',
theme: ThemeData(primarySwatch: Colors.blue),
home: FileUploadPage(),
);
}
}
class FileUploadPage extends StatefulWidget {
@override
_FileUploadPageState createState() => _FileUploadPageState();
}
class _FileUploadPageState extends State<FileUploadPage> {
final FileUploader uploader = FileUploader();
String? uploadStatus;
Future<void> uploadFile() async {
try {
// 1. Pick a file
FilePickerResult? result = await FilePicker.platform.pickFiles();
if (result == null) return;
File file = File(result.files.single.path!);
String fileName = result.files.single.name;
Dio dio = Dio();
// 2. Initialize metadata
Map<String, dynamic> metadata = {
"fileName": fileName,
"fileSize": await file.length(),
};
var list = [metadata];
final metadataResponse = await uploader.initializeMetaData(
metadataUploadModel: list,
dio: dio,
url: "https://your-api.com/initMetadata",
);
if (metadataResponse == null) {
setState(() {
uploadStatus = "No internet connection or metadata failed!";
});
return;
}
// 3. Upload file chunks
FormData formData = FormData.fromMap({
"file": await MultipartFile.fromFile(file.path, filename: fileName),
"metadataId": metadataResponse.first["id"], // example field
});
final chunkResponse = await uploader.uploadChunks(
dio: dio,
url: "https://your-api.com/uploadChunk",
formData: formData,
);
if (chunkResponse == null) {
setState(() {
uploadStatus = "File upload failed or no internet!";
});
return;
}
// 4. Bulk operation (connect attachment)
final bulkResponse = await uploader.bulkOperation(
bulkOperationUploadModel: [
{"fileId": chunkResponse["fileId"], "pageCode": "PAGE001"}
],
url: "https://your-api.com/connectAttachment",
data: {"attachments": [chunkResponse["fileId"]]},
);
setState(() {
uploadStatus = bulkResponse != null
? "File uploaded and connected successfully!"
: "Bulk operation failed!";
});
} catch (e) {
setState(() {
uploadStatus = "Error: $e";
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("File Uploader Example")),
body: Center(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: uploadFile,
child: Text("Upload File"),
),
SizedBox(height: 20),
if (uploadStatus != null) Text(uploadStatus!),
],
),
),
),
);
}
}