131

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

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

4

10 に答える 10

17

遅い答えですが、後でここを訪れる人にも役立つことを願っています..

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

  1. 共有設定 ストレージに単純な値を保存する場合に使用します。たとえば、カラー テーマ、アプリの言語、最後のスクロール位置 (アプリを読む場合) などです。これらは、アプリの再起動時に維持したい単純な設定です。大きなもの(リスト、マップ、画像)を保存するには、シリアライゼーションとデシリアライゼーションが必要です..このデシリアライゼーションとシリアライゼーションの詳細については、こちらを参照してください
  2. ファイル これは、ログ ファイル、画像ファイルなど、より詳細に定義されたデータがあり、おそらく csv ファイルをエクスポートしたい場合に非常に役立ちます。ディスクがなくなると、このタイプの永続性はストレージ クリーナーによって洗い流される可能性があると聞きました。スペース..見たことがないのでわかりません..これは、シリアライゼーションとデシリアライゼーションの助けを借りて、ほとんど何でも保存できます..
  3. データベースへの保存 これは、データが少し複雑な場合に非常に役立ちます。そして、これはAppData (Android用)に保存されているため、ディスククリーナーによって洗い流されないと思います..これでは、データはSQLiteデータベースに保存されます。そのプラグインはSQFLiteです。ここに入れたいデータの種類は、データベースで表現できるすべてのものと同じです。
于 2020-03-13T07:56:59.990 に答える
4

ローカルストレージを使用できます

flutter pub add localstorage

1-依存関係を追加しますpubspec.yaml最後のものに基づいてバージョンを変更します

dependencies:
  ...
  localstorage: ^4.0.0+1

2-次に、次のコマンドを実行します

flutter packages get

3- localstorage をインポートします。

import 'package:localstorage/localstorage.dart';

4-インスタンスを作成する

class MainApp extends StatelessWidget {
  final LocalStorage storage = new LocalStorage('localstorage_app');
  ...
}

lcoalstorage にアイテムを追加:

void addItemsToLocalStorage() {
  storage.setItem('name', 'Abolfazl');
  storage.setItem('family', 'Roshanzamir');

  final info = json.encode({'name': 'Darush', 'family': 'Roshanzami'});
  storage.setItem('info', info);
}

lcoalstorage からアイテムを取得します

void getitemFromLocalStorage() {
  final name = storage.getItem('name'); // Abolfazl
  final family = storage.getItem('family'); // Roshanzamir
  
  Map<String, dynamic> info = json.decode(storage.getItem('info'));
  final info_name=info['name'];
  final info_family=info['family'];
}

localstorage からアイテムを削除します。

void removeItemFromLocalStorage() {
  storage.deleteItem('name');
  storage.deleteItem('family');
  storage.deleteItem('info');
}
于 2020-10-07T21:58:41.750 に答える