web-dev-qa-db-ja.com

Flutterを使用してiOSの外部ストレージにテキストファイルを保存する方法

ユーザーがテキストファイルを作成してAndroidのローカルストレージに保存できるアプリを作成しました。私はpath_providerパッケージを使用しましたgetExternalStorageDirectory()データを外部ストレージに保存します。しかし、私はiosについて同じことを見つけることができません。 getExternalStorageDirectory()は、iosではサポートされていません。

ユーザーが後でFiles appからファイルにアクセスできるようにファイルを保存したい. 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);
}

上記のコードはAndroidで機能します(ストレージ権限が提供されている場合)。 iOSで同じことを達成するために誰かが私を助けてくれますか?.

8
Keshav

NSDocumentsDirectory(getApplicationDocumentsDirectory())にファイルを保存して、ユーザーが利用できるようにすることができます。

送信元: https://developer.Apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html

このディレクトリを使用して、ユーザーが生成したコンテンツを保存します。このディレクトリの内容は、ファイル共有を通じてユーザーが利用できるようにすることができます。したがって、彼のディレクトリには、ユーザーに公開したいファイルのみを含める必要があります。

ユーザーがディレクトリを使用できるようにするには、 'your_app/ios/Runner.xcworkspace'でXcodeプロジェクトを開く必要があります。次に、RunnerディレクトリのInfo.plistファイルを開き、UIFileSharingEnabledおよびLSSupportsOpeningDocumentsInPlaceキーを使用して2つの行を追加します。両方のキーの値をYESに設定します。

ファイルアプリを開いて[iPhone内]をクリックすると、アプリケーションの名前が付いたフォルダが表示されます。

7
yuqio

お世辞として@niを行います。答えは、両方のキーを有効にする必要があります。これは次のようになります。

Xcode(info.plist):

XcodeのInfo.plist

エディター(info.plist):

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

ソースの情報:

IOS 11以降では、このキーLSSupportsOpeningDocumentsInPlaceUIFileSharingEnabledの両方がキーがYESの場合、ローカルファイルプロバイダーは、アプリのドキュメントディレクトリ内のすべてのドキュメントへのアクセスを許可します。これらのドキュメントは、ファイルアプリとドキュメントブラウザーに表示されます。ユーザーはこれらのドキュメントを開いて編集できます。

ソース: Apple開発者-iOSキー

4
Gabrielhn