File tree Expand file tree Collapse file tree 4 files changed +50
-6
lines changed Expand file tree Collapse file tree 4 files changed +50
-6
lines changed Original file line number Diff line number Diff line change @@ -30,6 +30,7 @@ import 'package:flutter_map_example/pages/secondary_tap.dart';
3030import 'package:flutter_map_example/pages/single_world_polys.dart' ;
3131import 'package:flutter_map_example/pages/sliding_map.dart' ;
3232import 'package:flutter_map_example/pages/tile_builder.dart' ;
33+ import 'package:flutter_map_example/pages/tile_error.dart' ;
3334import 'package:flutter_map_example/pages/tile_loading_error_handle.dart' ;
3435import 'package:flutter_map_example/pages/wms_tile_layer.dart' ;
3536import 'package:flutter_web_plugins/url_strategy.dart' ;
@@ -76,6 +77,7 @@ class MyApp extends StatelessWidget {
7677 TileLoadingErrorHandle .route: (context) =>
7778 const TileLoadingErrorHandle (),
7879 TileBuilderPage .route: (context) => const TileBuilderPage (),
80+ ErrorTileBuilder .route: (context) => const ErrorTileBuilder (),
7981 InteractiveFlagsPage .route: (context) => const InteractiveFlagsPage (),
8082 ManyMarkersPage .route: (context) => const ManyMarkersPage (),
8183 MapInsideListViewPage .route: (context) => const MapInsideListViewPage (),
Original file line number Diff line number Diff line change 1+ import 'package:flutter/material.dart' ;
2+ import 'package:flutter_map/flutter_map.dart' ;
3+ import 'package:flutter_map_example/widgets/drawer/menu_drawer.dart' ;
4+
5+ /// Example of tile loading systematically failing.
6+ class ErrorTileBuilder extends StatelessWidget {
7+ static const String route = '/error_tile_builder' ;
8+
9+ const ErrorTileBuilder ({super .key});
10+
11+ @override
12+ Widget build (BuildContext context) {
13+ return Scaffold (
14+ appBar: AppBar (title: const Text ('Error Tile Builder' )),
15+ drawer: const MenuDrawer (ErrorTileBuilder .route),
16+ body: FlutterMap (
17+ options: const MapOptions (
18+ initialZoom: 3 ,
19+ ),
20+ children: [
21+ TileLayer (
22+ // obviously wrong url template
23+ urlTemplate: 'https://example.com/{z}/{y}/{x}' ,
24+ tileBuilder: (context, tileWidget, tile) {
25+ if (tile.loadError) {
26+ return Center (
27+ child: Text ('${tile .coordinates .z }'
28+ '/'
29+ '${tile .coordinates .x }'
30+ '/'
31+ '${tile .coordinates .y }' ),
32+ );
33+ }
34+ return tileWidget;
35+ },
36+ ),
37+ ],
38+ ),
39+ );
40+ }
41+ }
Original file line number Diff line number Diff line change @@ -34,6 +34,7 @@ import 'package:flutter_map_example/pages/secondary_tap.dart';
3434import 'package:flutter_map_example/pages/single_world_polys.dart' ;
3535import 'package:flutter_map_example/pages/sliding_map.dart' ;
3636import 'package:flutter_map_example/pages/tile_builder.dart' ;
37+ import 'package:flutter_map_example/pages/tile_error.dart' ;
3738import 'package:flutter_map_example/pages/tile_loading_error_handle.dart' ;
3839import 'package:flutter_map_example/pages/wms_tile_layer.dart' ;
3940import 'package:flutter_map_example/widgets/drawer/menu_item.dart' ;
@@ -280,6 +281,11 @@ class MenuDrawer extends StatelessWidget {
280281 routeName: TileBuilderPage .route,
281282 currentRoute: currentRoute,
282283 ),
284+ MenuItemWidget (
285+ caption: 'Custom Error Tile Builder' ,
286+ routeName: ErrorTileBuilder .route,
287+ currentRoute: currentRoute,
288+ ),
283289 MenuItemWidget (
284290 caption: 'Retina Tile Layer' ,
285291 routeName: RetinaPage .route,
Original file line number Diff line number Diff line change @@ -170,7 +170,7 @@ class TileImage extends ChangeNotifier {
170170 loadError = true ;
171171
172172 if (! _disposed) {
173- if (errorImage != null ) _display ();
173+ _display ();
174174 onLoadError (this , exception, stackTrace);
175175 onLoadComplete (coordinates);
176176 }
@@ -184,11 +184,6 @@ class TileImage extends ChangeNotifier {
184184 loadFinishedAt = DateTime .now ();
185185
186186 if (loadError) {
187- assert (
188- errorImage != null ,
189- 'A TileImage should not be displayed if loading errors and there is no '
190- 'errorImage to show.' ,
191- );
192187 _readyToDisplay = true ;
193188 if (! _disposed) notifyListeners ();
194189 return ;
You can’t perform that action at this time.
0 commit comments