7class NavigineSdkExample {
23 NavigineSdkExample() {
30 void _initializeSdk() {
39 print(
'Navigine SDK Version: ${NavigineSdk.getVersion()}');
44 print(
'Device ID: ${NavigineSdk.getDeviceId()}');
49 print(
'Relative Time: ${NavigineSdk.getRelativeTime()}');
59 print(
"User-Agent: ${NavigineSdk.getUserAgent()}");
64 print(
"SDK reset to initial state");
73 _initializeManagers();
75 print(
'SDK initialization error: $e');
82 void _initializeManagers() {
87 print(
'LocationManager successfully initialized');
96 print(
'NavigationManager successfully initialized');
106 print(
'ZoneManager successfully initialized');
119 print(
'RouteManager successfully initialized');
132 print(
'AsyncRouteManager successfully initialized');
142 print(
'NotificationManager successfully initialized');
152 print(
'MeasurementManager successfully initialized');
161 print(
'LocationListManager successfully initialized');
169 print(
'StorageManager successfully initialized');
179 print(
'RouteLayer successfully initialized');
195 print(
'Guidance mode: ${_guidanceCamera?.mode()}');
199 print(
'Next instruction: ${next?.title} ${next?.distance} m');
208 final walk = LocationPolyline(
209 [GlobalPoint(55.751, 37.618), GlobalPoint(55.752, 37.618)],
212 routeSimulator?.setGeometry([walk]);
215 routeSimulator?.setSpeed(1.4);
218 final started = routeSimulator?.start() ??
false;
219 print(
'Route walk started: $started');
222 final sample = routeSimulator?.sample();
223 print(
'Walk advance: ${sample?.advance} m');
233 print(
'MqttSession successfully initialized');
243 print(
'=== Navigine SDK Information ===');
244 print(
'SDK Version: ${NavigineSdk.getVersion()}');
245 print(
'Device ID: ${NavigineSdk.getDeviceId()}');
246 print(
'Relative Time: ${NavigineSdk.getRelativeTime()}');
248 'LocationManager: ${_locationManager != null ? "available" : "unavailable"}',
251 'NavigationManager: ${_navigationManager != null ? "available" : "unavailable"}',
253 print(
'ZoneManager: ${_zoneManager != null ? "available" : "unavailable"}');
255 'RouteManager: ${_routeManager != null ? "available" : "unavailable"}',
258 'AsyncRouteManager: ${_asyncRouteManager != null ? "available" : "unavailable"}',
261 'NotificationManager: ${_notificationManager != null ? "available" : "unavailable"}',
264 'MeasurementManager: ${_measurementManager != null ? "available" : "unavailable"}',
267 'LocationListManager: ${_locationListManager != null ? "available" : "unavailable"}',
270 'StorageManager: ${_storageManager != null ? "available" : "unavailable"}',
273 'MqttSession: ${_mqttSession != null ? "available" : "unavailable"}',
281 print(
'=== Manager Usage Demonstration ===');
285 print(
'LocationManager ready for location operations');
291 print(
'NavigationManager ready for positioning');
297 print(
'ZoneManager ready for zone operations');
303 print(
'RouteManager ready for route building');
309 print(
'AsyncRouteManager ready for async route operations');
315 print(
'NotificationManager ready for notifications');
321 print(
'MeasurementManager ready for measurements');
327 print(
'LocationListManager ready for location list operations');
333 print(
'StorageManager ready for storage operations');
339 print(
'MqttSession ready for publishing position data via MQTT');
348 print(
'=== Dart Features Demonstration ===');
351 _sdk?.setUserHash(
'YYYY-YYYY-YYYY-YYYY');
352 print(
'User hash updated');
355 final managers = <String>[
367 print(
'Available managers: $managers');
370 final sdkInfo = <String, String>{
376 final infoStrings = sdkInfo.entries.map(
377 (entry) =>
'${entry.key}: ${entry.value}',
379 print(
'SDK information: ${infoStrings.join(',
')}');
382 final allManagers = [
395 final availableManagers =
396 allManagers.where((manager) => manager !=
null).length;
397 print(
'Available managers count: $availableManagers');
403 Future<void> demonstrateAsyncFeatures() async {
404 print(
'=== Async Features Demonstration ===');
407 await Future.delayed(Duration(seconds: 1));
408 print(
'Async operation completed');
412 await _performAsyncOperation();
414 print(
'Error in async operation: $e');
421 Future<void> _performAsyncOperation() async {
422 await Future.delayed(Duration(milliseconds: 500));
423 print(
'Additional async operation completed');
430 print(
'=== Extension Methods Demonstration ===');
432 final status = _getManagersStatus();
433 print(
'Managers status: $status');
435 final isReady = _isSdkReady();
436 print(
'SDK ready for work: $isReady');
442 Future<void> runExample() async {
446 await demonstrateAsyncFeatures();