Loading...
Searching...
No Matches
navigine_sdk_example.dart
Go to the documentation of this file.
1import 'package:navigine_sdk/navigine_sdk.dart';
2
7class NavigineSdkExample {
8 NavigineSdk? _sdk;
9 LocationManager? _locationManager;
10 NavigationManager? _navigationManager;
11 ZoneManager? _zoneManager;
12 RouteManager? _routeManager;
13 AsyncRouteManager? _asyncRouteManager;
14 NotificationManager? _notificationManager;
15 MeasurementManager? _measurementManager;
16 LocationListManager? _locationListManager;
17 StorageManager? _storageManager;
18
19 NavigineSdkExample() {
20 _initializeSdk();
21 }
22
26 void _initializeSdk() {
27 try {
28 // [dart_NavigineSdk_getInstance]
29 // Get SDK instance
30 _sdk = NavigineSdk.getInstance();
31 // [dart_NavigineSdk_getInstance]
32
33 // [dart_NavigineSdk_getVersion]
34 // Get SDK version
35 print('Navigine SDK Version: ${NavigineSdk.getVersion()}');
36 // [dart_NavigineSdk_getVersion]
37
38 // [dart_NavigineSdk_getDeviceId]
39 // Get device ID
40 print('Device ID: ${NavigineSdk.getDeviceId()}');
41 // [dart_NavigineSdk_getDeviceId]
42
43 // [dart_NavigineSdk_getRelativeTime]
44 // Get relative time
45 print('Relative Time: ${NavigineSdk.getRelativeTime()}');
46 // [dart_NavigineSdk_getRelativeTime]
47
48 // [dart_NavigineSdk_setUserHash]
49 // Set user hash (authorization token)
50 _sdk?.setUserHash('XXXX-XXXX-XXXX-XXXX');
51 // [dart_NavigineSdk_setUserHash]
52
53 // [dart_NavigineSdk_setServer]
54 // Set server URL (optional)
55 _sdk?.setServer('https://custom.navigine.com');
56 // [dart_NavigineSdk_setServer]
57
58 // Initialize managers
59 _initializeManagers();
60 } catch (e) {
61 print('SDK initialization error: $e');
62 }
63 }
64
68 void _initializeManagers() {
69 // [dart_NavigineSdk_getLocationManager]
70 // Get LocationManager for working with locations
71 _locationManager = _sdk?.getLocationManager();
72 if (_locationManager != null) {
73 print('LocationManager successfully initialized');
74 }
75 // [dart_NavigineSdk_getLocationManager]
76
77 // [dart_NavigineSdk_getNavigationManager]
78 // Get NavigationManager for navigation
79 if (_locationManager != null) {
80 _navigationManager = _sdk?.getNavigationManager(_locationManager!);
81 if (_navigationManager != null) {
82 print('NavigationManager successfully initialized');
83 }
84 }
85 // [dart_NavigineSdk_getNavigationManager]
86
87 // [dart_NavigineSdk_getZoneManager]
88 // Get ZoneManager for working with zones
89 if (_navigationManager != null) {
90 _zoneManager = _sdk?.getZoneManager(_navigationManager!);
91 if (_zoneManager != null) {
92 print('ZoneManager successfully initialized');
93 }
94 }
95 // [dart_NavigineSdk_getZoneManager]
96
97 // [dart_NavigineSdk_getRouteManager]
98 // Get RouteManager for building routes
99 if (_locationManager != null && _navigationManager != null) {
100 _routeManager = _sdk?.getRouteManager(
101 _locationManager!,
102 _navigationManager!,
103 );
104 if (_routeManager != null) {
105 print('RouteManager successfully initialized');
106 }
107 }
108 // [dart_NavigineSdk_getRouteManager]
109
110 // [dart_NavigineSdk_getAsyncRouteManager]
111 // Get AsyncRouteManager for async route operations
112 if (_locationManager != null && _navigationManager != null) {
113 _asyncRouteManager = _sdk?.getAsyncRouteManager(
114 _locationManager!,
115 _navigationManager!,
116 );
117 if (_asyncRouteManager != null) {
118 print('AsyncRouteManager successfully initialized');
119 }
120 }
121 // [dart_NavigineSdk_getAsyncRouteManager]
122
123 // [dart_NavigineSdk_getNotificationManager]
124 // Get NotificationManager for notifications
125 if (_locationManager != null) {
126 _notificationManager = _sdk?.getNotificationManager(_locationManager!);
127 if (_notificationManager != null) {
128 print('NotificationManager successfully initialized');
129 }
130 }
131 // [dart_NavigineSdk_getNotificationManager]
132
133 // [dart_NavigineSdk_getMeasurementManager]
134 // Get MeasurementManager for measurements
135 if (_locationManager != null) {
136 _measurementManager = _sdk?.getMeasurementManager(_locationManager!);
137 if (_measurementManager != null) {
138 print('MeasurementManager successfully initialized');
139 }
140 }
141 // [dart_NavigineSdk_getMeasurementManager]
142
143 // [dart_NavigineSdk_getLocationListManager]
144 // Get LocationListManager for location list operations
145 _locationListManager = _sdk?.getLocationListManager();
146 if (_locationListManager != null) {
147 print('LocationListManager successfully initialized');
148 }
149 // [dart_NavigineSdk_getLocationListManager]
150
151 // [dart_NavigineSdk_getStorageManager]
152 // Get StorageManager for working with storages
153 _storageManager = _sdk?.getStorageManager();
154 if (_storageManager != null) {
155 print('StorageManager successfully initialized');
156 }
157 // [dart_NavigineSdk_getStorageManager]
158 }
159
163 void printSdkInfo() {
164 print('=== Navigine SDK Information ===');
165 print('SDK Version: ${NavigineSdk.getVersion()}');
166 print('Device ID: ${NavigineSdk.getDeviceId()}');
167 print('Relative Time: ${NavigineSdk.getRelativeTime()}');
168 print(
169 'LocationManager: ${_locationManager != null ? "available" : "unavailable"}',
170 );
171 print(
172 'NavigationManager: ${_navigationManager != null ? "available" : "unavailable"}',
173 );
174 print('ZoneManager: ${_zoneManager != null ? "available" : "unavailable"}');
175 print(
176 'RouteManager: ${_routeManager != null ? "available" : "unavailable"}',
177 );
178 print(
179 'AsyncRouteManager: ${_asyncRouteManager != null ? "available" : "unavailable"}',
180 );
181 print(
182 'NotificationManager: ${_notificationManager != null ? "available" : "unavailable"}',
183 );
184 print(
185 'MeasurementManager: ${_measurementManager != null ? "available" : "unavailable"}',
186 );
187 print(
188 'LocationListManager: ${_locationListManager != null ? "available" : "unavailable"}',
189 );
190 print(
191 'StorageManager: ${_storageManager != null ? "available" : "unavailable"}',
192 );
193 }
194
198 void demonstrateManagersUsage() {
199 print('=== Manager Usage Demonstration ===');
200
201 // LocationManager usage example
202 if (_locationManager != null) {
203 print('LocationManager ready for location operations');
204 // Add code here for loading locations, working with them, etc.
205 }
206
207 // NavigationManager usage example
208 if (_navigationManager != null) {
209 print('NavigationManager ready for positioning');
210 // Add code here for getting position, setting up listeners, etc.
211 }
212
213 // ZoneManager usage example
214 if (_zoneManager != null) {
215 print('ZoneManager ready for zone operations');
216 // Add code here for setting up zones, handling enter/exit events, etc.
217 }
218
219 // RouteManager usage example
220 if (_routeManager != null) {
221 print('RouteManager ready for route building');
222 // Add code here for building routes, setting destination points, etc.
223 }
224
225 // AsyncRouteManager usage example
226 if (_asyncRouteManager != null) {
227 print('AsyncRouteManager ready for async route operations');
228 // Add code here for creating routing sessions, etc.
229 }
230
231 // NotificationManager usage example
232 if (_notificationManager != null) {
233 print('NotificationManager ready for notifications');
234 // Add code here for setting up beacon notifications, etc.
235 }
236
237 // MeasurementManager usage example
238 if (_measurementManager != null) {
239 print('MeasurementManager ready for measurements');
240 // Add code here for managing measurement generators, etc.
241 }
242
243 // LocationListManager usage example
244 if (_locationListManager != null) {
245 print('LocationListManager ready for location list operations');
246 // Add code here for getting available locations list, etc.
247 }
248
249 // StorageManager usage example
250 if (_storageManager != null) {
251 print('StorageManager ready for storage operations');
252 // Add code here for creating storages, managing data, etc.
253 }
254 }
255
259 void demonstrateDartFeatures() {
260 print('=== Dart Features Demonstration ===');
261
262 // Using null-aware operators
263 _sdk?.setUserHash('YYYY-YYYY-YYYY-YYYY');
264 print('User hash updated');
265
266 // Using collection if for conditional element addition
267 final managers = <String>[
268 'LocationManager',
269 'NavigationManager',
270 if (_zoneManager != null) 'ZoneManager',
271 if (_routeManager != null) 'RouteManager',
272 if (_asyncRouteManager != null) 'AsyncRouteManager',
273 if (_notificationManager != null) 'NotificationManager',
274 if (_measurementManager != null) 'MeasurementManager',
275 if (_locationListManager != null) 'LocationListManager',
276 if (_storageManager != null) 'StorageManager',
277 ];
278 print('Available managers: $managers');
279
280 // Using map for data transformation
281 final sdkInfo = <String, String>{
282 'version': NavigineSdk.getVersion(),
283 'deviceId': NavigineSdk.getDeviceId(),
284 'relativeTime': NavigineSdk.getRelativeTime().toString(),
285 };
286
287 final infoStrings = sdkInfo.entries.map(
288 (entry) => '${entry.key}: ${entry.value}',
289 );
290 print('SDK information: ${infoStrings.join(', ')}');
291
292 // Using where for filtering
293 final allManagers = [
294 _locationManager,
295 _navigationManager,
296 _zoneManager,
297 _routeManager,
298 _asyncRouteManager,
299 _notificationManager,
300 _measurementManager,
301 _locationListManager,
302 _storageManager,
303 ];
304
305 final availableManagers =
306 allManagers.where((manager) => manager != null).length;
307 print('Available managers count: $availableManagers');
308 }
309
313 Future<void> demonstrateAsyncFeatures() async {
314 print('=== Async Features Demonstration ===');
315
316 // Simulating async operation
317 await Future.delayed(Duration(seconds: 1));
318 print('Async operation completed');
319
320 // Using async/await with error handling
321 try {
322 await _performAsyncOperation();
323 } catch (e) {
324 print('Error in async operation: $e');
325 }
326 }
327
331 Future<void> _performAsyncOperation() async {
332 await Future.delayed(Duration(milliseconds: 500));
333 print('Additional async operation completed');
334 }
335
339 void demonstrateExtensionMethods() {
340 print('=== Extension Methods Demonstration ===');
341
342 final status = _getManagersStatus();
343 print('Managers status: $status');
344
345 final isReady = _isSdkReady();
346 print('SDK ready for work: $isReady');
347 }
348
352 Future<void> runExample() async {
353 printSdkInfo();
354 demonstrateManagersUsage();
355 demonstrateDartFeatures();
356 await demonstrateAsyncFeatures();
357 demonstrateExtensionMethods();
359 }
360}
361
365extension NavigineSdkExampleExtension on NavigineSdkExample {
369 Map<String, bool> _getManagersStatus() {
370 return {
371 'LocationManager': _locationManager != null,
372 'NavigationManager': _navigationManager != null,
373 'ZoneManager': _zoneManager != null,
374 'RouteManager': _routeManager != null,
375 'AsyncRouteManager': _asyncRouteManager != null,
376 'NotificationManager': _notificationManager != null,
377 'MeasurementManager': _measurementManager != null,
378 'LocationListManager': _locationListManager != null,
379 };
380 }
381
385 bool _isSdkReady() {
386 return _sdk != null && _locationManager != null;
387 }
388}
389
393class NavigineSdkFlutterExample {
394 static Future<void> initializeInFlutter() async {
395 print('=== Navigine SDK Initialization in Flutter ===');
396
397 final example = NavigineSdkExample();
398 await example.runExample();
399
400 print('Initialization completed');
401 }
402}
403
407void main() async {
408 final example = NavigineSdkExample();
409 await example.runExample();
410}