Skip to content

Commit 142ea7f

Browse files
authored
Preplanned Offline Map Sample (#3)
1 parent dd5db20 commit 142ea7f

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

lib/src/samples/preplanned_offline_map_sample.dart

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ class PreplannedOfflineMapState extends State<PreplannedOfflineMapSample> {
5353
children: [
5454
Expanded(
5555
child: ArcGISMapView(
56-
controllerProvider: () => _mapViewController,
56+
controllerProvider: () =>
57+
_mapViewController..arcGISMap = _sourceMap,
5758
onMapViewReady: onMapViewReady,
5859
),
5960
),
@@ -73,7 +74,7 @@ class PreplannedOfflineMapState extends State<PreplannedOfflineMapSample> {
7374
padding: const EdgeInsets.all(8),
7475
itemCount: _preplannedAreas.length,
7576
itemBuilder: (context, index) {
76-
final name = 'Map area $index';
77+
final name = _preplannedAreas[index].portalItem.title;
7778
return Card(
7879
child: ListTile(
7980
trailing: Text((index == _selectedPreplannedAreaIndex && _isLoading)
@@ -93,9 +94,13 @@ class PreplannedOfflineMapState extends State<PreplannedOfflineMapSample> {
9394
final map = await _downloadOfflineMap(index);
9495
_mapViewController.arcGISMap = map;
9596
} catch (e) {
96-
print(e);
97+
if (mounted) {
98+
print(e);
99+
}
97100
} finally {
98-
setState(() => _isLoading = false);
101+
if (mounted) {
102+
setState(() => _isLoading = false);
103+
}
99104
}
100105
},
101106
),
@@ -109,13 +114,17 @@ class PreplannedOfflineMapState extends State<PreplannedOfflineMapSample> {
109114
}
110115

111116
Future<void> _initPreplannedMapTask(ArcGISMap map) async {
112-
final offlineMapTask = OfflineMapTask.withOnlineMap(map);
117+
final offlineMapTask = OfflineMapTask.withOnlineMap(_sourceMap);
113118
await offlineMapTask.load();
114119
final preplannedAreas = await offlineMapTask.getPreplannedMapAreas();
115-
print('Number of preplanned maps: ${preplannedAreas.length}');
120+
for (final preplannedArea in preplannedAreas) {
121+
await preplannedArea.load();
122+
}
116123

117124
_offlineMapTask = offlineMapTask;
118-
setState(() => _preplannedAreas = preplannedAreas);
125+
if (mounted) {
126+
setState(() => _preplannedAreas = preplannedAreas);
127+
}
119128
}
120129

121130
Future<ArcGISMap?> _downloadOfflineMap(int preplannedAreaIndex) async {
@@ -139,14 +148,10 @@ class PreplannedOfflineMapState extends State<PreplannedOfflineMapSample> {
139148
parameters: downloadParams,
140149
downloadDirectoryUri: mapDownloadDir.uri);
141150

142-
print('Starting download job');
143151
final downloadResult = await downloadMapJob.run();
144152

145153
// Return downloaded map
146-
print('Result job status: ${downloadMapJob.status}');
147-
if (downloadResult.hasErrors) {
148-
print('Downloading map failed with errors');
149-
} else {
154+
if (!downloadResult.hasErrors) {
150155
return downloadResult.offlineMap;
151156
}
152157

0 commit comments

Comments
 (0)