Сохранение файлов локально доступно для отправки по электронной почте или просмотра в файловом менеджере Android - PullRequest
1 голос
/ 25 октября 2019

Флаттер, дротик и Visual Studio. Устройства Android.

После сохранения файла и чтения его обратно, чтобы убедиться, что все прошло нормально, я не могу найти файл, поэтому его нельзя отправить по электронной почте или просмотреть вообще.

Как можноЯ сохраняю его, чтобы пользователь мог увидеть файл, чтобы он мог его прочитать или отправить по электронной почте и т. Д.

Спасибо

class SaveJson {
  SaveJson();

  Future<String> get _localPath async {
    final directory = await getApplicationDocumentsDirectory();
    return directory.path;
  }

  Future<File> get _localFile async {
    final path = await _localPath;
    final file = File('${path}/macf.txt');
    return file;
  }

  Future<File> writeJson(String data) async {
    final file = await _localFile;
    return file.writeAsString(data);
  }

  read() async {
    try {
      final directory = await getApplicationDocumentsDirectory();
      final file = File('${directory.path}/macf.txt');
      String text = await file.readAsString();
      print(text);
    } catch (e) {
      print("Couldn't read file");
    }
  }
}

1 Ответ

1 голос
/ 25 октября 2019

Вы используете пакет path_provider, а getApplicationDocumentsDirectory возвращает путь к скрытому каталогу приложений. Пользователи не могут видеть этот каталог с помощью файловых менеджеров (есть способ найти его, но это нелегко для конечного пользователя). Вы можете использовать пакет downloads_path_provider:

import 'package:downloads_path_provider/downloads_path_provider.dart';  

Future<Directory> downloadsDirectory = DownloadsPathProvider.downloadsDirectory;

В этом коде downloadsDirectory является каталогом загрузок в памяти телефона, который может видеть пользователь. Затем вы можете открыть его или отправить по электронной почте.

downloads_path_provider package package

...