SharedPreferencesに保存できる型は限定的なので、DateTime型の値を保存するには型を変換して保存する必要があります。
このページではString型に変換して保存する方法、保存した値を取り出す方法を紹介します
目次
保存処理:DateTime型を文字列に変換して保存する
// SharedPreferencesにDateTimeを保存する関数
Future<void> saveDateTimeToSharedPreferences(DateTime value) async {
final prefs = await SharedPreferences.getInstance();
prefs.setString('key', value.toIso8601String());
}
このコードでは、DateTime型の値をISO 8601形式の文字列に変換して保存しています。
取得処理:保存した文字列(日付)を取り出してDateTime型に戻す
// SharedPreferencesからDateTimeを読み込む関数
Future<DateTime> loadDateTimeFromSharedPreferences() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
final dateString = prefs.getString('key');
return dateString != null ? DateTime.parse(dateString).toLocal() : DateTime.now();
}
このコードでは、保存した日付文字列を取得しDateTime.parse
を使用してDateTime型に戻しています。
もし保存された値が存在しない場合は、現在の日時を返すようにしています。
使用例
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
// SharedPreferencesにDateTimeを保存する関数
Future<void> saveDateTimeToSharedPreferences(DateTime value) async {
final prefs = await SharedPreferences.getInstance();
prefs.setString('key', value.toIso8601String());
}
// SharedPreferencesからDateTimeを読み込む関数
Future<DateTime> loadDateTimeFromSharedPreferences() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
final dateString = prefs.getString('key');
return dateString != null ? DateTime.parse(dateString).toLocal() : DateTime.now();
}
// 使用例
void main() async {
await saveDateTimeToSharedPreferences(DateTime.now());
DateTime loadedDateTime = await loadDateTimeFromSharedPreferences();
print(loadedDateTime); // Output: current date and time
}
Comment