9class ZoneManagerExample {
16 ZoneManagerExample() {
24 void _initializeSdk() {
63 "LocationManager, NavigationManager and ZoneManager successfully initialized",
67 print(
"Error initializing SDK: $e");
74 void _setupZoneListener() {
77 onZoneEvent: (ZoneEvent zoneEvent) {
78 print(
"Zone event detected");
79 _demonstrateZoneEventUsage(zoneEvent);
90 print(
"ZoneManager not initialized");
97 print(
"Added zone listener");
101 Future.delayed(Duration(seconds: 2), () {
105 print(
"Removed zone listener");
113 void _demonstrateZoneEventUsage(ZoneEvent zoneEvent) {
114 if (zoneEvent ==
null) {
115 print(
"ZoneEvent is null");
121 ZoneEventType type = zoneEvent.
type;
122 print(
"Zone event type: $type");
128 print(
"Zone location ID: $locationId");
134 print(
"Zone sublocation ID: $sublocationId");
139 int id = zoneEvent.
id;
140 print(
"Zone ID: $id");
145 String name = zoneEvent.
name;
146 print(
"Zone name: $name");
151 String alias = zoneEvent.
alias;
152 print(
"Zone alias: $alias");
157 ZoneEvent newZoneEvent = ZoneEvent(
166 "Created new zone event: ${newZoneEvent.name} (${newZoneEvent.alias})",
177 print(
"Available zone event types:");
178 print(
" - ZoneEventType.ENTER: ${ZoneEventType.ENTER}");
179 print(
" - ZoneEventType.EXIT: ${ZoneEventType.EXIT}");
186 Future<void> demonstrateAdvancedZoneFeatures() async {
187 print(
"=== Advanced Zone Features ===");
194 ZoneListener listener1 = ZoneListener(
195 onZoneEvent: (ZoneEvent event) {
196 print(
"Listener 1: Zone event - ${event.name}");
200 ZoneListener listener2 = ZoneListener(
201 onZoneEvent: (ZoneEvent event) {
202 print(
"Listener 2: Zone event - ${event.name}");
209 print(
"Added first zone listener");
212 await Future.delayed(Duration(seconds: 1));
217 print(
"Added second zone listener");
221 await Future.delayed(Duration(seconds: 3));
227 print(
"Removed first zone listener");
230 await Future.delayed(Duration(seconds: 1));
235 print(
"Removed second zone listener");
243 print(
"=== Zone Event Simulation ===");
246 List<ZoneEvent> simulatedEvents = [
255 ZoneEvent(ZoneEventType.EXIT, 12345, 1, 100,
"Entrance Zone",
"entrance"),
264 ZoneEvent(ZoneEventType.ENTER, 12345, 1, 102,
"Cafeteria",
"cafeteria"),
276 for (
int i = 0; i < simulatedEvents.length; i++) {
277 Future.delayed(Duration(seconds: i + 1), () {
278 ZoneEvent
event = simulatedEvents[i];
280 "Simulated zone event: ${event.type} - ${event.name} (${event.alias})",
282 _demonstrateZoneEventUsage(event);
291 print(
"=== Zone Listener Management ===");
298 ZoneListener testListener = ZoneListener(
299 onZoneEvent: (ZoneEvent event) {
300 print(
"Test listener received event: ${event.name}");
306 print(
"Added test zone listener");
309 Future.delayed(Duration(seconds: 2), () {
312 print(
"Removed test zone listener");
331 Future<void> runExample() async {
332 print(
"=== ZoneManager Example ===");
337 await demonstrateAdvancedZoneFeatures();
341 await Future.delayed(Duration(seconds: 5));
344 print(
"=== Example completed ===");