ご質問
Flutter上でSharedPreferencesを使ってデータの保存を試みていますが、データが保存できません。SharedPreferencesを使ったデータ保存の最も単純な形まで戻ったつもりです。
どこに問題がありそうでしょうか。ご助言をくださいますと幸いです。不足している情報がありましたら適宜追記いたします。
よろしくお願いいたします。
処理の説明
SharedPreferencesインスタンスを生成してリストを保存するメソッド、保存したものを読み取ってリストに代入するメソッドをそれぞれ定義しました。
リストに「something」、「anything」を入れて保存メソッドを動かしました。
リストの内容を空にしてから、sharedpreferencesからリストを読み込むメソッドを呼び出して、そのリスト内容をプリントしています。
しかし、プリントされたのは空のリストでした。正常に値の保存、読み込みが行われていれば、作成したリストの内容がここに表示されるものと期待していました。
環境
Macbook Pro (14 inch, 2021)
Apple M1 Pro
MacOS Monterey 12.1
SharedPreferences: 2.0.15
IDE: Android Studio
ソースコード
Dart
import 'package:flutter/material.dart'; import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart'; void main() { runApp(const MyApp()); /// define savekey for prefs & stringlist String _saveKey = "KEY"; List<String> _list = []; /// save list from prefs void save() async { SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setStringList(_saveKey, _list); } /// load list from prefs void load() async { SharedPreferences prefs = await SharedPreferences.getInstance(); _list = prefs.getStringList(_saveKey) ?? []; } /// main part _list = ["something", "anything"]; save(); _list = []; load(); print(_list); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); // This widget is the root of your application. Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), ); } }
実行結果
Console
Launching lib/main.dart on iPhone SE (3rd generation) in debug mode. . . Running pod install. . . Xcode build done. 16.9s Debug sevice listening on ws://127.0.0.1:53756/M5lQLgtDLDw=/ws Syncing files to device iPhone SE (3rd generation). . . flutter: []
その他情報
アプリのあるディレクトリにdataフォルダがありません。
私が調べた際には「SharedPreferencesによって保存したデータは基本的にアプリのディレクトリのdata/data/配下に保存される」という情報を目にしました。何か関係しているのかもしれません。
まだ回答がついていません
会員登録して回答してみよう