استخدام Watch-IP مع Flutter وDart
تُغلِّف watch_ip_sdk (على pub.dev، الإصدار v0.1.2) استدعاء GET /v1/geo لتطبيقات Flutter ولغة Dart وحدها، وهي مبنية على package:http بدلًا من عميل يعتمد على المكتبة القياسية فقط، لتعمل أيضًا على Flutter للويب.
التثبيت
يتطلب Dart 3.0 أو أحدث / أي قناة Flutter مستقرة حالية. يعتمد على package:http — وهذا استثناء مقصود من نهج حزم SDK الأخرى الخالي من التبعيات، لأن HttpClient الخاص بـ dart:io غير متاح على Flutter للويب.
Flutter
flutter pub add watch_ip_sdkالبدء السريع
يُرسل إصدار Flutter للويب العامل في تبويب متصفح فعلي ترويسة Origin بشكل صحيح تلقائيًا. أما الإصدار الأصلي لـ iOS/Android/سطح المكتب، أو لغة Dart وحدها على خادم، فلا يفعل ذلك — مرِّر origin صراحةً في تلك الحالة. لا تحتاج هذه الحزمة (SDK) أبدًا سوى المفتاح القابل للنشر؛ لا تُضمِّن أبدًا مفتاحًا سريًا في تطبيق يتم شحنه للمستخدمين.
Dart
import 'package:watch_ip_sdk/watch_ip_sdk.dart';
final client = WatchIP('wip_pub_xxxxxxxx');
final geo = await client.getGeo();
print('${geo.country} ${geo.city} ${geo.timezone}');معالجة الأخطاء والمُهل الزمنية
كل فشل يُطلِق WatchIPError يحمل status ورمزًا ثابتًا. الطلب الذي لا يكتمل خلال timeout يُطلِق خطأً برمز network_error.
Dart
try {
final geo = await client.getGeo(timeout: const Duration(seconds: 5));
} on WatchIPError catch (e) {
print('${e.code} ${e.status} ${e.message}');
}ما لا تُغطيه هذه الحزمة (SDK)
لا تستدعي هذه الحزمة سوى GET /v1/geo. لا يوجد بعد عميل Dart للبحث عن عنوان IP، أو التحقق من البريد الإلكتروني، أو فحوصات المخاطر — استدعِها باستخدام package:http مباشرة من الخلفية (Backend) الخاصة بك، لا من التطبيق نفسه أبدًا، لأن تلك النقاط تحتاج إلى مفتاح سري. راجع دليل المصادقة.