web-dev-qa-db-fra.com

Comment enregistrer un fichier texte dans un stockage externe sous iOS à l'aide de Flutter?

J'ai créé une application dans laquelle l'utilisateur peut créer et enregistrer un fichier texte dans le stockage local d'Android. J'ai utilisé le paquet path_provider qui donne getExternalStorageDirectory () pour enregistrer les données dans le stockage externe. Mais je ne peux pas trouver la même chose pour ios . getExternalStorageDirectory () n'est pas pris en charge pour iOS.

Je souhaite enregistrer le fichier afin que l'utilisateur puisse ultérieurement accéder au fichier à partir de Application Files dans iOS - enter image description here

Future<String> get _localPath async{
var dir = await getExternalStorageDirectory();

  return dir.path;
}

Future<File> get _localFile async{
  final path = await _localPath;

  return File('$path/test.txt');
}

Future<File> writeData(String msg) async{
  final file = await _localFile;

  return file.writeAsString(msg);
}

Le code ci-dessus fonctionne pour Android (si des autorisations de stockage sont fournies). Quelqu'un peut-il m'aider à réaliser la même chose dans iOS.

8
Keshav

Vous pouvez enregistrer le fichier dans NSDocumentsDirectory (getApplicationDocumentsDirectory()), puis le rendre accessible à l'utilisateur.

De: https://developer.Apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html

Utilisez ce répertoire pour stocker le contenu généré par l'utilisateur. Le contenu de ce répertoire peut être mis à la disposition de l'utilisateur via le partage de fichiers; par conséquent, son répertoire ne doit contenir que des fichiers que vous souhaiterez peut-être exposer à l'utilisateur.

Pour mettre le répertoire à la disposition de l'utilisateur, vous devez ouvrir le projet Xcode sous "your_app/ios/Runner.xcworkspace". Ouvrez ensuite le fichier Info.plist dans le répertoire Runner et ajoutez deux lignes avec la clé UIFileSharingEnabled et LSSupportsOpeningDocumentsInPlace. Définissez la valeur des deux clés sur YES.

Si vous ouvrez maintenant l'application Fichiers et cliquez sur "Sur mon iPhone", vous devriez voir un dossier avec le nom de votre application.

7
yuqio

En guise de compliment, faites @ni. réponse, vous devez activer les deux touches. Voici à quoi cela devrait ressembler:

Xcode (info.plist):

Info.plist sur Xcode

Éditeur (info.plist):

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

Info dans la source:

Dans iOS 11 et versions ultérieures, si ces deux clés LSSupportsOpeningDocumentsInPlace et le UIFileSharingEnabled La clé est OUI, le fournisseur de fichiers local accorde l'accès à tous les documents du répertoire Documents de l'application. Ces documents apparaissent dans l'application Fichiers et dans un navigateur de documents. Les utilisateurs peuvent ouvrir et modifier ces documents sur place.

Source: développeur Apple - clés iOS

4
Gabrielhn