ma_ng_file_uploader 0.0.5 copy "ma_ng_file_uploader: ^0.0.5" to clipboard
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!),
            ],
          ),
        ),
      ),
    );
  }
}
1
likes
115
points
355
downloads

Publisher

unverified uploader

Weekly Downloads

Mariapps Internal Package to build Flutter apps faster

Repository (GitHub)

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

connectivity_plus, dio, flutter, http, plugin_platform_interface

More

Packages that depend on ma_ng_file_uploader

Packages that implement ma_ng_file_uploader