Flutterで3日前とか相対的な時間を表示したいなと思い、
いろいろ調べて見たときの備忘録(*´ω`*)
これをつかえばいいっぽい
使い方
簡単な使い方はこんな感じ
// 言語の自動選択版 RelativeTime(context).format(time); // 言語の指定版 RelativeTime.locale(const Locale('en')).format(time);
多言語対応されているので、Localizationsを追加する必要がある
MaterialApp( localizationsDelegates: const <LocalizationsDelegate<dynamic>>[ AppLocalizations.delegate, // これを追加 RelativeTimeLocalizations.delegate, // GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], supportedLocales: AppLocalizations.supportedLocales, );
表示する単位を変える
デフォルトの単位は、year
、month
、week
、day
、hour
、minute
、second
。
何日前以上がいい場合は、timeUnits
を指定すればOK
RelativeTime( context, timeUnits: const <TimeUnit>[ TimeUnit.year, TimeUnit.week, TimeUnit.day, ], ).format(time);
昨日/一昨日ではなく、1日前/2日前で表示する
デフォルトだと、自然言語で表現するようになっているけど、
なるべく数字表記がいい場合は、numeric
をtrue
にする
RelativeTime( context, numeric: true, ).format(time);
テスト
テストする場合は、clockパッケージをつかうといいっぽい
withClock( Clock.fixed(DateTime.fromMicrosecondsSinceEpoch(0)), () => RelativeTime(context).format(time), );
以上!! 便利なのが用意されててありがたい(*´ω`*)