7class NavigineSdkExample {
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;
19 NavigineSdkExample() {
26 void _initializeSdk() {
30 _sdk = NavigineSdk.getInstance();
35 print(
'Navigine SDK Version: ${NavigineSdk.getVersion()}');
40 print(
'Device ID: ${NavigineSdk.getDeviceId()}');
45 print(
'Relative Time: ${NavigineSdk.getRelativeTime()}');
50 _sdk?.setUserHash(
'XXXX-XXXX-XXXX-XXXX');
55 _sdk?.setServer(
'https://custom.navigine.com');
59 _initializeManagers();
61 print(
'SDK initialization error: $e');
68 void _initializeManagers() {
71 _locationManager = _sdk?.getLocationManager();
72 if (_locationManager !=
null) {
73 print(
'LocationManager successfully initialized');
79 if (_locationManager !=
null) {
80 _navigationManager = _sdk?.getNavigationManager(_locationManager!);
81 if (_navigationManager !=
null) {
82 print(
'NavigationManager successfully initialized');
89 if (_navigationManager !=
null) {
90 _zoneManager = _sdk?.getZoneManager(_navigationManager!);
91 if (_zoneManager !=
null) {
92 print(
'ZoneManager successfully initialized');
99 if (_locationManager !=
null && _navigationManager !=
null) {
100 _routeManager = _sdk?.getRouteManager(
104 if (_routeManager !=
null) {
105 print(
'RouteManager successfully initialized');
112 if (_locationManager !=
null && _navigationManager !=
null) {
113 _asyncRouteManager = _sdk?.getAsyncRouteManager(
117 if (_asyncRouteManager !=
null) {
118 print(
'AsyncRouteManager successfully initialized');
125 if (_locationManager !=
null) {
126 _notificationManager = _sdk?.getNotificationManager(_locationManager!);
127 if (_notificationManager !=
null) {
128 print(
'NotificationManager successfully initialized');
135 if (_locationManager !=
null) {
136 _measurementManager = _sdk?.getMeasurementManager(_locationManager!);
137 if (_measurementManager !=
null) {
138 print(
'MeasurementManager successfully initialized');
145 _locationListManager = _sdk?.getLocationListManager();
146 if (_locationListManager !=
null) {
147 print(
'LocationListManager successfully initialized');
153 _storageManager = _sdk?.getStorageManager();
154 if (_storageManager !=
null) {
155 print(
'StorageManager successfully initialized');
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()}');
169 'LocationManager: ${_locationManager != null ? "available" : "unavailable"}',
172 'NavigationManager: ${_navigationManager != null ? "available" : "unavailable"}',
174 print(
'ZoneManager: ${_zoneManager != null ? "available" : "unavailable"}');
176 'RouteManager: ${_routeManager != null ? "available" : "unavailable"}',
179 'AsyncRouteManager: ${_asyncRouteManager != null ? "available" : "unavailable"}',
182 'NotificationManager: ${_notificationManager != null ? "available" : "unavailable"}',
185 'MeasurementManager: ${_measurementManager != null ? "available" : "unavailable"}',
188 'LocationListManager: ${_locationListManager != null ? "available" : "unavailable"}',
191 'StorageManager: ${_storageManager != null ? "available" : "unavailable"}',
198 void demonstrateManagersUsage() {
199 print(
'=== Manager Usage Demonstration ===');
202 if (_locationManager !=
null) {
203 print(
'LocationManager ready for location operations');
208 if (_navigationManager !=
null) {
209 print(
'NavigationManager ready for positioning');
214 if (_zoneManager !=
null) {
215 print(
'ZoneManager ready for zone operations');
220 if (_routeManager !=
null) {
221 print(
'RouteManager ready for route building');
226 if (_asyncRouteManager !=
null) {
227 print(
'AsyncRouteManager ready for async route operations');
232 if (_notificationManager !=
null) {
233 print(
'NotificationManager ready for notifications');
238 if (_measurementManager !=
null) {
239 print(
'MeasurementManager ready for measurements');
244 if (_locationListManager !=
null) {
245 print(
'LocationListManager ready for location list operations');
250 if (_storageManager !=
null) {
251 print(
'StorageManager ready for storage operations');
259 void demonstrateDartFeatures() {
260 print(
'=== Dart Features Demonstration ===');
263 _sdk?.setUserHash(
'YYYY-YYYY-YYYY-YYYY');
264 print(
'User hash updated');
267 final managers = <String>[
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',
278 print(
'Available managers: $managers');
281 final sdkInfo = <String, String>{
282 'version': NavigineSdk.getVersion(),
283 'deviceId': NavigineSdk.getDeviceId(),
284 'relativeTime': NavigineSdk.getRelativeTime().toString(),
287 final infoStrings = sdkInfo.entries.map(
288 (entry) =>
'${entry.key}: ${entry.value}',
290 print(
'SDK information: ${infoStrings.join(',
')}');
293 final allManagers = [
299 _notificationManager,
301 _locationListManager,
305 final availableManagers =
306 allManagers.where((manager) => manager !=
null).length;
307 print(
'Available managers count: $availableManagers');
313 Future<void> demonstrateAsyncFeatures() async {
314 print(
'=== Async Features Demonstration ===');
317 await Future.delayed(Duration(seconds: 1));
318 print(
'Async operation completed');
322 await _performAsyncOperation();
324 print(
'Error in async operation: $e');
331 Future<void> _performAsyncOperation() async {
332 await Future.delayed(Duration(milliseconds: 500));
333 print(
'Additional async operation completed');
339 void demonstrateExtensionMethods() {
340 print(
'=== Extension Methods Demonstration ===');
342 final status = _getManagersStatus();
343 print(
'Managers status: $status');
345 final isReady = _isSdkReady();
346 print(
'SDK ready for work: $isReady');
352 Future<void> runExample() async {
354 demonstrateManagersUsage();
355 demonstrateDartFeatures();
356 await demonstrateAsyncFeatures();
357 demonstrateExtensionMethods();