-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpoi_route.dart
52 lines (47 loc) · 1.61 KB
/
poi_route.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import 'dart:async';
import 'package:design_system_flutter/design_system_flutter.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:sbb_maps_example/env.dart';
import 'package:sbb_maps_example/theme_provider.dart';
import 'package:sbb_maps_flutter/sbb_maps_flutter.dart';
class POIRoute extends StatefulWidget {
const POIRoute({super.key});
@override
State<POIRoute> createState() => _POIRouteState();
}
class _POIRouteState extends State<POIRoute> {
final Completer<SBBRokasPOIController> _poiController = Completer();
@override
Widget build(BuildContext context) {
final mapStyler = SBBRokasMapStyler.full(
apiKey: Env.journeyMapsTilesApiKey,
isDarkMode: Provider.of<ThemeProvider>(context).isDark,
);
return Scaffold(
appBar: const SBBHeader(title: 'POI'),
body: SBBMap(
initialCameraPosition: const SBBCameraPosition(
target: LatLng(46.947456, 7.451123), // Bern
zoom: 15.0,
),
isMyLocationEnabled: true,
mapStyler: mapStyler,
poiSettings: SBBMapPOISettings(
isPointOfInterestVisible: true,
onPoiControllerAvailable: (poiController) =>
!_poiController.isCompleted ? _poiController.complete(poiController) : null,
onPoiSelected: (poi) => showSBBModalSheet(
context: context,
title: poi.name,
child: const SizedBox(height: 64),
).then(
(_) => _poiController.future.then(
(c) => c.deselectPointOfInterest(),
),
),
),
),
);
}
}