simple_file_manager 0.0.6 copy "simple_file_manager: ^0.0.6" to clipboard
simple_file_manager: ^0.0.6 copied to clipboard

Simple File Manager preview your folder and files in simple way.

example/lib/main.dart

import 'dart:convert';
import 'dart:typed_data';

import 'package:flutter/material.dart';
import 'package:http_parser/http_parser.dart';
import 'package:simple_file_manager/simple_file_manager.dart';
import 'package:http/http.dart' as http;

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Simple File Manager',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Simple File Manager'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    init();

    super.initState();
  }

  init() async {
    _myData = await getFilesData(null);
    setState(() {});
  }

  List<FileModel>? _myData;

  /// Get url data using api or anyway you want
  Future<List<FileModel>?> getFilesData(String? parentId) async {
    var response = await http.get(
        Uri.parse(
          'yourBaseUrl.api/file/tree?parentId=${parentId ?? ''}&skip=0'
          '&count=0'),
       );
    Map<String, dynamic> json = jsonDecode(response.body);
    return List<FileModel>.from(json['data'].map((e) => FileModel.fromJson(e)));
  }

  Future<String> uploadFile(
      String? folderId, Uint8List? pickedFile, String? pickedFileName) async {
    var request = http.MultipartRequest(
        "POST",
        Uri.parse('yourBaseUrl.api/storage/folder/file/admin'));
       request.files.add(http.MultipartFile.fromBytes(
      'file',
      pickedFile!,
      filename: pickedFileName,
      contentType: MediaType("image", pickedFileName!.split('.').last),
    ));
    request.fields['name'] = pickedFileName;
    request.headers["Content-Type"] = "image/jpg";
    request.fields['path'] = 'img';
    request.fields['type'] = 'File';
    if (folderId != null) request.fields['parentId'] = folderId;

    var response = await request.send();
    var data = await response.stream.toBytes();
    String dataString = utf8.decode(data);
    var r = json.decode(dataString);
    return r['data']['thumbnailUrl'];
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: _myData != null
          ? SimpleFileManager(
        filesList: _myData!,
              uploadButtonText: 'Upload',
              onUpload: (String? parentId, pickedFiles, pickedFileNames) async {
                if (pickedFiles != null) {
                  List<String> urlList = [];
                  for (int x = 0; x < pickedFiles.length; x++) {
                    urlList.add(await uploadFile(
                        parentId, pickedFiles[x], pickedFileNames?[x]));
                  }
                } else {
                  return null;
                }
              },
              // onCreateFolderClicked: (String? parentID,String? folderName) {
              // },
              onBack: (String? value) async {
                return await getFilesData(value);
              },
              onFolderClicked: (value) async {
                return await getFilesData(value!.id);
              },
              // placeholderFromAssets: 'assets/images/placeholder.png',
            )
          : null,
    );
  }
}
2
likes
95
points
78
downloads

Publisher

unverified uploader

Weekly Downloads

Simple File Manager preview your folder and files in simple way.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

dropdown_button2, file_picker, flowder_ex, flutter, flutter_file_handler, path_provider

More

Packages that depend on simple_file_manager