Q&A
実現したいこと
文字列を保存して読み込みたい
前提
日記アプリを作っていて、日記を追加したら、その内容・日付・時間なんかをそれぞれSharedPreferencesで保存してます。
今はアプリを閉じてまた開いたとき、日記の内容を読み込ませたいです。
保存は多分上手くできてるのですが読み込む際に違う値が入ってしまいます。
該当のソースコード
Main.Dartの抜粋
Dart
1 2 void initState() { 3 super.initState(); 4 5 Future(() async { 6 await rm.madeDiaryOrNot(); 7 await rm.readDiary(); 8 await rm.readDate(); 9 await rm.readTime(); 10 11 setState(() { 12 for (int i = 0; i < diaryList.length; i++) { 13 items.add(diaryList.elementAt(i) + '\n' + translatedList.elementAt(i)); 14 print(diaryList.elementAt(i)); 15 } 16 }); 17 }); 18 } 19
SaveAndGet.Dartの抜粋
Dart
1Future<void> save(String inputtext,String date,String time) async{ 2 final SharedPreferences diaryPrefs = await _diaryPrefs; 3 final SharedPreferences counterPrefs = await _counterPrefs; 4 final SharedPreferences datePrefs = await _datePrefs; 5 final SharedPreferences timePrefs = await _timePrefs; 6 await diaryPrefs.setString(counter.toString(), inputtext); 7 print(inputtext); 8 await counterPrefs.setInt('counter',counter); 9 await datePrefs.setString(counter.toString(), date); 10 await timePrefs.setString(counter.toString(), time); 11 } 12 13 Future<List> getDiaryPref() async { 14 SharedPreferences diaryPrefs = await SharedPreferences.getInstance(); 15 List<String> list = []; 16 for(int i = 1; i <= counter; i++) { 17 list.add(diaryPrefs.getString(i.toString()) ?? 'nothing'); 18 print(diaryPrefs.getString(i.toString())); 19 } 20 return list; 21 } 22 23 Future<List> getTimePref() async { 24 SharedPreferences timePrefs = await SharedPreferences.getInstance(); 25 List<String> list = []; 26 for(int i = 1; i <= counter; i++) { 27 list.add(timePrefs.getString(i.toString()) ?? 'nothing'); 28 } 29 return list; 30 }
試したこと
デバッグして変数の値を調べました。inputtextをdiaryPrefsに保存したはずなので読み込んだ際に"原因がわからない"が入っててほしいのですが、なぜかtimePrefsで保存したであろうtimeが出てきています。
↓保存するところ
↓読み込み
↓結果
上の写真とは違いますが、timeを保存するところ(SaveAndGet.DartのL10)をコメント化してみたら、多分datePrefsで保存されたであろう日付がListViewに表示されました。
補足情報(FW/ツールのバージョンなど)
shared_preferences: ^2.0.13
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2023/03/16 12:03