ntp_dart 1.2.1 copy "ntp_dart: ^1.2.1" to clipboard
ntp_dart: ^1.2.1 copied to clipboard

Lightweight Dart package to fetch accurate UTC time from NTP servers with no external dependencies.

🌐 NTP Dart #

NTP Dart

The Reliable Cross-Platform Time Synchronization Plugin for Flutter & Dart

Pub Version Pub Likes Pub Points License


NTP Dart guarantees your application has access to accurate UTC time, regardless of valid local device settings. It seamlessly handles both cross-platform differences and network conditions to deliver reliable time data.

🚀 Why choose ntp_dart? #

  • 🛠 Cross-Platform: Native UDP NTP on Mobile/Desktop, HTTP on Web.
  • ⚡ Accurate: Millisecond precision with Latency Compensation.
  • 🔋 Efficient: Built-in caching with AccurateTime to minimize network requests.
  • 🌍 Flexible: Configurable servers, custom Web APIs (e.g., WorldTimeAPI), and sync intervals.

📱 Platform Support #

Feature Android iOS macOS Windows Linux Web
Support

📦 Installation #

Add the dependency to your pubspec.yaml:

dependencies:
  ntp_dart: ^1.2.0

Run installation:

flutter pub get

Import in your project:

import 'package:ntp_dart/ntp_dart.dart';

🛠 Usage #

1️⃣ Direct Network Fetch #

Get the current time directly from the server. Ideal for one-off checks.

// Standard NTP fetch (pool.ntp.org)
final DateTime now = await NtpClient().now();

🌐 Web Specific Configuration

On Web, you can customize the API endpoint and parsing logic (e.g., using WorldTimeAPI).

final customWebTime = await NtpClient(
  // Custom API Endpoint
  apiUrl: 'https://worldtimeapi.org/api/timezone/Etc/UTC',
  // Custom Response Parser
  parseResponse: (response) {
    return DateTime.parse(jsonDecode(response.body)['utc_datetime']);
  },
).now();

Use AccurateTime to maintain a synced clock without spamming network requests. It automatically re-syncs based on your interval.

Async (Checks cache, syncs if needed):

final DateTime now = await AccurateTime.now();

Sync (Returns cache immediately, syncs in background):

final DateTime now = AccurateTime.nowSync();

Configure Sync Interval (Default: 60 mins):

AccurateTime.setSyncInterval(Duration(minutes: 15));

📘 API Reference #

NtpClient #

The core client for fetching time.

Parameter Type Description Default
server String NTP Server URL (Mobile/Desktop) 'pool.ntp.org'
port int NTP Port (Mobile/Desktop) 123
timeout int Request timeout in seconds 5
isUtc bool Return UTC (true) or Local (false) false
apiUrl String? Time API URL (Web Only) null (uses internal)
parseResponse Function? Parser callback (Web Only) null

AccurateTime #

Singleton helper for caching and synchronization.

Method Description
now({bool isUtc = false}) Returns Future<DateTime>. Syncs if cache is stale.
nowSync({bool isUtc = false}) Returns DateTime. Background syncs if stale.
nowToIsoString({bool isUtc = true}) Returns ISO 8601 string.
setSyncInterval() Sets the duration before the next network sync is required.

💡 Use Cases #

  • 🔐 Authentication: Validate tokens (JWT) with server-side expiry times.
  • 🎰 Gaming & Contests: prevent cheating by bypassing device clock.
  • ⏱️ Countdowns: Reliable timers for sales or events.
  • 📜 Audit Trails: Consistent timestamps for logs across devices.

🤝 Contributing #

We welcome contributions! Please check the issues or submit a PR.


Built with ❤️ by Enzo De Simone
4
likes
160
points
1.41k
downloads

Publisher

verified publisherenzodesimone.dev

Weekly Downloads

Lightweight Dart package to fetch accurate UTC time from NTP servers with no external dependencies.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

http, intl

More

Packages that depend on ntp_dart