【Flutter】SharedPreferencesを使ってDateTime型データを端末に保存する方法【Dart】

Dart

DateTime型データをjsonに変換しようとして、エラーとなった話をメモしておきます。

エラー内容

SharedPreferencesを使用してDateTime型データを端末に保存したかったので、一度データをjsonへ変換しました。

Json.encode(DateTime.Now())

すると、次のエラーが発生しました。

 [VERBOSE-2:ui_dart_state.cc(198)] Unhandled Exception: Converting object to an encodable object failed: Instance of 'DateTime'

「DateTime型のインスタンスを、エンコード可能なオブジェクトに変換できませんでした」とのこです。

原因・解決方法

これは、Dartの言語仕様でした。つまり、DartではDateTime型をjsonへ変換できないようなのです。

このため、解決方法としてはDateTime型データを一度String型へ変換し、それからjsonへ変換する必要があります。

Json.encode(DateTime.Now().toString())

これで解決できました。

タイトルとURLをコピーしました