くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Flutterで相対時間を表示する(relative_time)

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,
);

表示する単位を変える

デフォルトの単位は、yearmonthweekdayhourminutesecond
何日前以上がいい場合は、timeUnitsを指定すればOK

RelativeTime(
  context, 
  timeUnits: const <TimeUnit>[
    TimeUnit.year,
    TimeUnit.week,
    TimeUnit.day,
  ],
).format(time);

昨日/一昨日ではなく、1日前/2日前で表示する

デフォルトだと、自然言語で表現するようになっているけど、
なるべく数字表記がいい場合は、numerictrueにする

RelativeTime(
  context,
  numeric: true,
).format(time);

テスト

テストする場合は、clockパッケージをつかうといいっぽい

withClock(
  Clock.fixed(DateTime.fromMicrosecondsSinceEpoch(0)),
  () => RelativeTime(context).format(time),
);

以上!! 便利なのが用意されててありがたい(*´ω`*)

参考にしたサイト様