Flutterを使用してローカルストレージに保存する方法


96

Androidでは、セッション間で保持したい情報があれば、SharedPreferencesを使用したり、SQLiteデータベースを作成したり、デバイスにファイルを書き込んで後で読み込んだりすることができます。

Flutterを使用するだけでこのようなデータを保存および復元する方法はありますか?または、サービスの例のように、AndroidおよびiOS用のデバイス固有のコードを記述する必要がありますか?

回答:


116

いくつかのオプションがあります:


私はSQLiteのアクセスにフラッターサービスを書いて、参照github.com/ripple182/FlutterSQLiteSampleを
ripple182

ルームを使用することは可能ですか?ルームを使用すると、iOSはどうなりますか?
MNFS、

1
これは、共有設定の方がうまくいくようです:pub.dev/packages/shared_preferences
Yster


51

あなたが後で参照したい小さな値を保存したい状況にいる場合。次に、shared_preferencesを使用してデータをKey-Valueデータとして保存する必要があります

ただし、大きなデータを保存する場合は、SQLITEを使用する必要があります。

ただし、オフラインで利用できるFirebaseデータベースはいつでも使用できます

ローカルストレージについて話しているので、いつでもファイルをディスクに読み書きできます

その他の解決策:


sqfliteまたはfirebaseをいつ使用するかを決める方法は?
stuckedoverflow 2018

1
sqflite電話にのみ保存します。firebaseバックエンドでクエリを実行できる中央データベースで同期されます。firebaseまた、デバイス間の同期も簡単になります。
Feu

FirebaseのFirestoreのデフォルトは10MBであり、1MB以上、最大100MBに設定できることに注意してください。純粋なオフラインアクセスは推奨されません。これをローカルストレージオプションとしてのみ使用する予定で、データが大きい場合は、再検討する必要がある場合があります。 firebase.google.com/docs/reference/android/com/google/firebase/...
ランダー

これは、さまざまなシナリオのどこを見ればよいかを簡単に説明するだけなので、推奨される答えです。
janpeterka

12

flutterの公式プラグインから共有設定を使用できます。 https://github.com/flutter/plugins/tree/master/packages/shared_preferences

Androidでは共有設定、iOSではNSUserDefaultsを使用します。


1
これは大規模なデータベースに理想的ですか?
temp_

1
@temp_ iOSについてはあまり知りません。ただし、Androidの共有設定は、大規模なデータベースには明らかに適していません。それらはプレーンxmlファイルとしてファイルシステムに書き込まれ、要求に応じてファイルシステムから読み取られます。これらは主にアプリの設定などを保存するために使用されます。
forgemo

これは、共有設定でうまく機能するようです:pub.dev/packages/shared_preferences
Yster

6

遅い回答ですが、後でここに訪れる人にも役立つと思います😁..

保存するカテゴリとそれぞれの最適な方法を提供します...

  1. 共有設定 シンプルな値をストレージに保存するときに使用します。たとえば、カラーテーマ、アプリの言語、最後のスクロール位置(アプリの読み取り時)。これらは、アプリの再起動時に保持する必要があるシンプルな設定です。ただし、これを使用することもできます。大きなもの(リスト、マップ、画像)を格納するには、シリアライズとデシリアライズが必要になります。このデシリアライズとシリアライズの詳細については、こちらをご覧ください
  2. ファイル これは、ログファイル、イメージファイルなど、より詳細に定義されたデータがあり、csvファイルをエクスポートする場合に役立ちます。このタイプの永続性は、ディスクがなくなるとストレージクリーナーで洗浄できると聞きました。スペース..見たことがないのでわかりません..これも、シリアル化と非シリアル化の助けを借りて、ほとんどすべてを保存できます。
  3. データベースへの保存 これは、少し複雑なデータで非常に役立ちます。そして、これはAppData(androidの場合)に格納されているため、ディスククリーナーによって洗い流されることはないと思います。この場合、データはSQLiteデータベースに格納されます。プラグインはSQFLiteです。ここに入れたいデータの種類は、データベースで表すことができるすべてのものに似ています。

5

APIトークンやログインデータ(パスワードではなく)などの単純な値のみを保存する必要がある場合は、以下を使用しました。

import 'package:shared_preferences/shared_preferences.dart';

asyncFunc() async { // Async func to handle Futures easier; or use Future.then
  SharedPreferences prefs = await SharedPreferences.getInstance();
}
...

// Set
prefs.setString('apiToken', token);

// Get
String token = prefs.getString('apiToken');

// Remove
prefs.remove('apiToken');

shared_preferencespubspec.yamlに依存関係を追加することを忘れないでください(間隔フォーマットを維持):

dependencies:

  shared_preferences: any


0

ローカルストレージに大量のデータを保存する場合は、sqfliteライブラリを使用できます。セットアップはとても簡単で、私は個人的にいくつかのテストプロジェクトで使用しており、問題なく動作します。

https://github.com/tekartik/sqflite これはチュートリアルです-https://proandroiddev.com/flutter-bookshelf-app-part-2-personal-notes-and-database-integration-a3b47a84c57

クラウドにデータを保存する場合は、firebaseを使用できます。グーグルが提供する確かなサービスです。

https://firebase.google.com/docs/flutter/setup


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.