[Flutter]端末の時間ではなく、実際の時間を取得する

現在の時間を扱うときによく

DateTime.now()

を使うことが多いと思います。

しかし、これは端末の時間を取得しているため、時間経過で重要な処理などがある場合には適しません。

なので実際の時間を取得する必要があります。

今回は実際の時間を取得する方法として外部のサーバから時間を取得することで対応したいと思います。実装に関しては以下です。

import 'package:dio/dio.dart';

Future<DateTime> fetchCurrentUTCTimeWithDio() async {
 Dio dio = Dio();
 final response = await dio.get('https://worldtimeapi.org/api/timezone/Etc/UTC');

 if (response.statusCode == 200) {
  return DateTime.parse(response.data['utc_datetime']);
 } else {
  throw Exception('Failed to fetch the time with Dio');
 }
}

https://worldtimeapi.org/

上記のサイトから正確な時間を取得できます!

DateTime.now()は便利ですが、ユーザーが自由に時間を変えられるので要注意です!