open_document 1.0.6%2B2

SDKflutter
Platformandroidioswindowsmacos

OpenDocument generate a local folder, for file and document storage, also can open pdf, xlsx, docs, ppt and zip files. You can also locate your files by implementing MyFilesScreen you can change folder styles and colors using StyleMyFile

open_document

Used to create a folder on the user's mobile phone and Desktop;

  • Android stays inside documents with the name of your app
  • iOs is in your app's name files
  • Windows Documents

Opening pdf, xlsx, docs, ppt and zip files


Getting Started

Android ->> config res -> create folder -> xml -> create provider_paths.xml

<?xml version="1.0" encoding="utf-8"?>
 <paths>
   <external-path
     name="external_files"
     path="." />
 </paths>

Add AndroidManifest :

  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.INTERNET" />

<provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="com.example.open_document_example.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths" />
    </provider>

iOs config -> info.plist Add Create folder em Document

 <key>LSSupportsOpeningDocumentsInPlace</key>
    <true/>

USED ->

final name = await OpenDocument.getNameFile(url: url);

final path = await OpenDocument.getPathDocument();

filePath = "$path/$name";

final isCheck = await OpenDocument.checkDocument(filePath: filePath);

try {
  if (!isCheck) {
    filePath = await downloadFile(filePath: "$filePath", url: url);
  }

await OpenDocument.openDocument(filePath: filePath);

} on OpenDocumentException catch (e) {
  debugPrint("ERROR: ${e.errorMessage}");
  filePath = 'Failed to get platform version.';
}

Future<String> downloadFile({String filePath, String url}) async {
    // CancelToken cancelToken = CancelToken();
  Dio dio = new Dio();
    await dio.download(
      url,
      filePath,
      onReceiveProgress: (count, total) {
        debugPrint('---Download----Rec: $count, Total: $total');
        setState(() {
          _platformVersion = ((count / total) * 100).toStringAsFixed(0) + "%";
        });
    },
  );

  return filePath;
}

How to access the folder created with the files and view and delete:

With StyleFile you can change some settings of Viewing Your Screen with Your Files

StyleMyFile.elevatedButtonText = "Compartilhar";

Call preview screen


pushScreen() async {
  String name = await OpenDocument.getNameFolder();

    Navigator.of(context).push(
    MaterialPageRoute(
      builder: (context) => MyFilesScreen(filePath: name),
    ),
  );
}