diff --git a/wien_talks/wien_talks_flutter/assets/render_themes/defaultrender.xml b/wien_talks/wien_talks_flutter/assets/render_themes/defaultrender.xml new file mode 100644 index 0000000..a82424f --- /dev/null +++ b/wien_talks/wien_talks_flutter/assets/render_themes/defaultrender.xml @@ -0,0 +1,1507 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wien_talks/wien_talks_flutter/lib/create_event_screen.dart b/wien_talks/wien_talks_flutter/lib/create_event_screen.dart index bc50467..58f2947 100644 --- a/wien_talks/wien_talks_flutter/lib/create_event_screen.dart +++ b/wien_talks/wien_talks_flutter/lib/create_event_screen.dart @@ -1,8 +1,12 @@ import 'package:flutter/cupertino.dart'; +import 'package:location/location.dart'; import 'package:wien_talks_flutter/get_location_widget.dart'; +import 'package:wien_talks_flutter/mapfile_widget.dart'; import 'package:wien_talks_flutter/news_input_form.dart'; import 'package:wien_talks_flutter/widgets/screen_widget.dart'; +import 'location_mgr.dart'; + class CreateEventScreen extends StatelessWidget { const CreateEventScreen({super.key}); @@ -11,9 +15,13 @@ class CreateEventScreen extends StatelessWidget { return ScreenWidget( child: Column( children: [ - Text("hello"), - GetLocationWidget(), NewsInputForm(onSubmit: (newsEventModel) {}), + StreamBuilder(stream: LocationMgr().stream, builder: (BuildContext context, AsyncSnapshot snapshot) => Text(snapshot.data.toString())), + Expanded( + child: GetLocationWidget( + child: MapfileWidget(), + ), + ), ], )); } diff --git a/wien_talks/wien_talks_flutter/lib/get_location_widget.dart b/wien_talks/wien_talks_flutter/lib/get_location_widget.dart index 4fad495..3c190e2 100644 --- a/wien_talks/wien_talks_flutter/lib/get_location_widget.dart +++ b/wien_talks/wien_talks_flutter/lib/get_location_widget.dart @@ -1,38 +1,42 @@ import 'package:flutter/material.dart'; -import 'package:location/location.dart'; import 'package:wien_talks_flutter/location_mgr.dart'; -class GetLocationWidget extends StatelessWidget { - const GetLocationWidget({super.key}); +class GetLocationWidget extends StatefulWidget { + final Widget child; + + const GetLocationWidget({super.key, required this.child}); + + @override + State createState() => _GetLocationWidgetState(); +} + +class _GetLocationWidgetState extends State { + @override + void dispose() { + LocationMgr().shutdown(); + super.dispose(); + } @override Widget build(BuildContext context) { - return Column( - children: [ - FutureBuilder( - future: LocationMgr().startup(), - builder: (BuildContext context, AsyncSnapshot snapshot) { - switch (snapshot.connectionState) { - case ConnectionState.waiting: - return CircularProgressIndicator(); - case ConnectionState.done: - { - if (snapshot.hasData) { - // Error occured - return Text(snapshot.data.toString()); - } else { - return Text("No data -> OK"); - } - } - default: - if (snapshot.hasError) { - return Text('Error: ${snapshot.error}'); - } - return Text("OK"); + return FutureBuilder( + future: LocationMgr().startup(), + builder: (BuildContext context, AsyncSnapshot snapshot) { + switch (snapshot.connectionState) { + case ConnectionState.none: + case ConnectionState.waiting: + return CircularProgressIndicator(); + case ConnectionState.active: + case ConnectionState.done: + { + if (snapshot.hasData) { + // Error occured + return Text(snapshot.data.toString(), style: TextStyle(color: Colors.red)); + } else { + return widget.child; + } } - }), - StreamBuilder(stream: LocationMgr().stream, builder: (BuildContext context, AsyncSnapshot snapshot) => Text(snapshot.data.toString())), - ], - ); + } + }); } } diff --git a/wien_talks/wien_talks_flutter/lib/location_mgr.dart b/wien_talks/wien_talks_flutter/lib/location_mgr.dart index 1ab24b9..c43dab0 100644 --- a/wien_talks/wien_talks_flutter/lib/location_mgr.dart +++ b/wien_talks/wien_talks_flutter/lib/location_mgr.dart @@ -1,10 +1,14 @@ import 'dart:async'; +import 'package:flutter/material.dart'; import 'package:location/location.dart'; +import 'package:mapsforge_flutter/core.dart'; +import 'package:mapsforge_flutter/maps.dart'; +import 'package:mapsforge_flutter/marker.dart'; import 'package:rxdart/rxdart.dart'; class LocationMgr { - Location location = Location(); + final Location location = Location(); bool serviceEnabled = false; @@ -16,14 +20,35 @@ class LocationMgr { final Subject _subject = PublishSubject(); + final TileBitmapCache bitmapCache = MemoryTileBitmapCache.create(); + StreamSubscription? _subscription; + ViewModel? viewModel; + + late MapModel mapModel; + + IconMarker? iconMarker; + + final DisplayModel displayModel = DisplayModel(maxZoomLevel: 20); + + final SymbolCache symbolCache = FileSymbolCache(); + + final JobRenderer jobRenderer = MapOnlineRenderer(); + factory LocationMgr() { _instance ??= LocationMgr._(); return _instance!; } - LocationMgr._(); + LocationMgr._() { + mapModel = MapModel( + displayModel: displayModel, + renderer: jobRenderer, + symbolCache: symbolCache, + tileBitmapCache: bitmapCache, + ); + } Future startup() async { serviceEnabled = await location.serviceEnabled(); @@ -41,8 +66,21 @@ class LocationMgr { return "No permissions granted"; } } + viewModel = ViewModel(displayModel: displayModel); _subscription = location.onLocationChanged.listen((LocationData currentLocation) { _lastLocationData = currentLocation; + if (currentLocation.latitude != null && currentLocation.longitude != null) { + viewModel?.setMapViewPosition(currentLocation.latitude!, currentLocation.longitude!); + if (iconMarker == null) { + iconMarker ??= IconMarker( + fontSize: 30, + icon: Icons.gps_fixed, + color: Colors.red, + center: LatLong(currentLocation.latitude!, currentLocation.longitude!), + displayModel: displayModel); + mapModel.markerDataStores.add(MarkerDataStore()..addMarker(iconMarker!)); + } + } _subject.add(currentLocation); }); return null; @@ -51,6 +89,10 @@ class LocationMgr { void shutdown() { _subscription?.cancel(); _subscription = null; + mapModel.markerDataStores.clear(); + iconMarker = null; + viewModel?.dispose(); + viewModel = null; } Stream get stream => _subject.stream; diff --git a/wien_talks/wien_talks_flutter/lib/mapfile_widget.dart b/wien_talks/wien_talks_flutter/lib/mapfile_widget.dart new file mode 100644 index 0000000..8134338 --- /dev/null +++ b/wien_talks/wien_talks_flutter/lib/mapfile_widget.dart @@ -0,0 +1,26 @@ +import 'package:flutter/cupertino.dart'; +import 'package:mapsforge_flutter/core.dart'; +import 'package:wien_talks_flutter/location_mgr.dart'; + +class MapfileWidget extends StatefulWidget { + const MapfileWidget({super.key}); + + @override + State createState() => _MapfileWidgetState(); +} + +////////////////////////////////////////////////////////////////////////////// + +class _MapfileWidgetState extends State { + @override + Widget build(BuildContext context) { + return MapviewWidget( + displayModel: LocationMgr().displayModel, + createMapModel: () async { + return LocationMgr().mapModel; + }, + createViewModel: () async { + return LocationMgr().viewModel!; + }); + } +} diff --git a/wien_talks/wien_talks_flutter/macos/Flutter/GeneratedPluginRegistrant.swift b/wien_talks/wien_talks_flutter/macos/Flutter/GeneratedPluginRegistrant.swift index 407ec0f..09409a5 100644 --- a/wien_talks/wien_talks_flutter/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/wien_talks/wien_talks_flutter/macos/Flutter/GeneratedPluginRegistrant.swift @@ -10,8 +10,11 @@ import file_picker import file_selector_macos import location import path_provider_foundation +<<<<<<< Updated upstream import shared_preferences_foundation import sqflite_darwin +======= +>>>>>>> Stashed changes func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin")) @@ -19,6 +22,9 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) LocationPlugin.register(with: registry.registrar(forPlugin: "LocationPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) +<<<<<<< Updated upstream SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) +======= +>>>>>>> Stashed changes } diff --git a/wien_talks/wien_talks_flutter/pubspec.yaml b/wien_talks/wien_talks_flutter/pubspec.yaml index 80b3751..d32cc2e 100644 --- a/wien_talks/wien_talks_flutter/pubspec.yaml +++ b/wien_talks/wien_talks_flutter/pubspec.yaml @@ -29,6 +29,8 @@ dependencies: location: ^8.0.1 + mapsforge_flutter: ^3.0.2 + rxdart: ^0.28.0 serverpod_flutter: 2.9.1 @@ -59,32 +61,176 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg + assets: + - assets/render_themes/ + - packages/mapsforge_flutter/assets/patterns/dark_farmland.svg + - packages/mapsforge_flutter/assets/patterns/dark_military.png + - packages/mapsforge_flutter/assets/patterns/coniferous.svg + - packages/mapsforge_flutter/assets/patterns/coniferous_and_deciduous.svg + - packages/mapsforge_flutter/assets/patterns/deciduous.svg + - packages/mapsforge_flutter/assets/patterns/farmland.svg + - packages/mapsforge_flutter/assets/patterns/grass.svg + - packages/mapsforge_flutter/assets/patterns/hills.svg + - packages/mapsforge_flutter/assets/patterns/quarry.svg + - packages/mapsforge_flutter/assets/patterns/scrub.svg + - packages/mapsforge_flutter/assets/patterns/swamp.svg + - packages/mapsforge_flutter/assets/patterns/access-destination.png + - packages/mapsforge_flutter/assets/patterns/access-private.png + - packages/mapsforge_flutter/assets/patterns/arrow.png + - packages/mapsforge_flutter/assets/patterns/cemetery.png + - packages/mapsforge_flutter/assets/patterns/deciduous.svg + - packages/mapsforge_flutter/assets/patterns/dot.png + - packages/mapsforge_flutter/assets/patterns/farmland.svg + - packages/mapsforge_flutter/assets/patterns/grass.svg + - packages/mapsforge_flutter/assets/patterns/hills.svg + - packages/mapsforge_flutter/assets/patterns/marsh.png + - packages/mapsforge_flutter/assets/patterns/military.png + - packages/mapsforge_flutter/assets/patterns/nature-reserve.png + - packages/mapsforge_flutter/assets/patterns/pike.png + - packages/mapsforge_flutter/assets/patterns/quarry.svg + - packages/mapsforge_flutter/assets/patterns/rail.png + - packages/mapsforge_flutter/assets/patterns/scrub.svg + - packages/mapsforge_flutter/assets/patterns/swamp.svg + - packages/mapsforge_flutter/assets/patterns/wood-coniferous.png + - packages/mapsforge_flutter/assets/patterns/wood-deciduous.png + - packages/mapsforge_flutter/assets/patterns/wood-mixed.png + - packages/mapsforge_flutter/assets/symbols/bench.svg + - packages/mapsforge_flutter/assets/symbols/cable_car.svg + - packages/mapsforge_flutter/assets/symbols/chair_lift.svg + - packages/mapsforge_flutter/assets/symbols/dot_black.svg + - packages/mapsforge_flutter/assets/symbols/dot_blue.svg + - packages/mapsforge_flutter/assets/symbols/dot_blue_dark.svg + - packages/mapsforge_flutter/assets/symbols/dot_magenta.svg + - packages/mapsforge_flutter/assets/symbols/dot_white.svg + - packages/mapsforge_flutter/assets/symbols/gondola.svg + - packages/mapsforge_flutter/assets/symbols/oneway.svg + - packages/mapsforge_flutter/assets/symbols/peak.svg + - packages/mapsforge_flutter/assets/symbols/railway-crossing-small.svg + - packages/mapsforge_flutter/assets/symbols/railway-crossing.svg + - packages/mapsforge_flutter/assets/symbols/traffic_signal.svg + - packages/mapsforge_flutter/assets/symbols/volcano.svg + - packages/mapsforge_flutter/assets/symbols/accommodation/alpinehut.svg + - packages/mapsforge_flutter/assets/symbols/accommodation/camping.svg + - packages/mapsforge_flutter/assets/symbols/accommodation/caravan_park.svg + - packages/mapsforge_flutter/assets/symbols/accommodation/chalet.svg + - packages/mapsforge_flutter/assets/symbols/accommodation/hostel.svg + - packages/mapsforge_flutter/assets/symbols/accommodation/hotel2.svg + - packages/mapsforge_flutter/assets/symbols/accommodation/shelter2.svg + - packages/mapsforge_flutter/assets/symbols/amenity/firestation3.svg + - packages/mapsforge_flutter/assets/symbols/amenity/fountain2.svg + - packages/mapsforge_flutter/assets/symbols/amenity/library.svg + - packages/mapsforge_flutter/assets/symbols/amenity/playground.svg + - packages/mapsforge_flutter/assets/symbols/amenity/police2.svg + - packages/mapsforge_flutter/assets/symbols/amenity/post_box.svg + - packages/mapsforge_flutter/assets/symbols/amenity/post_office.svg + - packages/mapsforge_flutter/assets/symbols/amenity/recycling.svg + - packages/mapsforge_flutter/assets/symbols/amenity/telephone.svg + - packages/mapsforge_flutter/assets/symbols/amenity/toilets.svg + - packages/mapsforge_flutter/assets/symbols/barrier/blocks.svg + - packages/mapsforge_flutter/assets/symbols/barrier/bollard.svg + - packages/mapsforge_flutter/assets/symbols/barrier/cycle_barrier.svg + - packages/mapsforge_flutter/assets/symbols/barrier/gate.svg + - packages/mapsforge_flutter/assets/symbols/barrier/lift_gate.svg + - packages/mapsforge_flutter/assets/symbols/barrier/stile.svg + - packages/mapsforge_flutter/assets/symbols/custom/amenity/fountain2.svg + - packages/mapsforge_flutter/assets/symbols/custom/amenity/library.svg + - packages/mapsforge_flutter/assets/symbols/custom/amenity/toilets.svg + - packages/mapsforge_flutter/assets/symbols/custom/money/atm2.svg + - packages/mapsforge_flutter/assets/symbols/custom/tourist/archaeological2.svg + - packages/mapsforge_flutter/assets/symbols/custom/tourist/attraction.svg + - packages/mapsforge_flutter/assets/symbols/custom/tourist/castle2.svg + - packages/mapsforge_flutter/assets/symbols/custom/tourist/cinema2.svg + - packages/mapsforge_flutter/assets/symbols/custom/tourist/information.svg + - packages/mapsforge_flutter/assets/symbols/custom/tourist/memorial.svg + - packages/mapsforge_flutter/assets/symbols/custom/tourist/monument.svg + - packages/mapsforge_flutter/assets/symbols/custom/tourist/museum.svg + - packages/mapsforge_flutter/assets/symbols/custom/tourist/ruin.svg + - packages/mapsforge_flutter/assets/symbols/custom/tourist/theatre.svg + - packages/mapsforge_flutter/assets/symbols/custom/tourist/view_point.svg + - packages/mapsforge_flutter/assets/symbols/custom/tourist/windmill.svg + - packages/mapsforge_flutter/assets/symbols/custom/tourist/zoo.svg + - packages/mapsforge_flutter/assets/symbols/education/nursery3.svg + - packages/mapsforge_flutter/assets/symbols/education/school.svg + - packages/mapsforge_flutter/assets/symbols/education/university.svg + - packages/mapsforge_flutter/assets/symbols/food/bar.svg + - packages/mapsforge_flutter/assets/symbols/food/biergarten.svg + - packages/mapsforge_flutter/assets/symbols/food/cafe.svg + - packages/mapsforge_flutter/assets/symbols/food/drinkingtap.svg + - packages/mapsforge_flutter/assets/symbols/food/fastfood.svg + - packages/mapsforge_flutter/assets/symbols/food/pub.svg + - packages/mapsforge_flutter/assets/symbols/food/restaurant.svg + - packages/mapsforge_flutter/assets/symbols/health/doctors2.svg + - packages/mapsforge_flutter/assets/symbols/health/hospital.svg + - packages/mapsforge_flutter/assets/symbols/health/pharmacy.svg + - packages/mapsforge_flutter/assets/symbols/money/atm2.svg + - packages/mapsforge_flutter/assets/symbols/money/bank2.svg + - packages/mapsforge_flutter/assets/symbols/place_of_worship/buddhist.svg + - packages/mapsforge_flutter/assets/symbols/place_of_worship/christian.svg + - packages/mapsforge_flutter/assets/symbols/place_of_worship/hindu.svg + - packages/mapsforge_flutter/assets/symbols/place_of_worship/islamic.svg + - packages/mapsforge_flutter/assets/symbols/place_of_worship/jewish.svg + - packages/mapsforge_flutter/assets/symbols/place_of_worship/shinto.svg + - packages/mapsforge_flutter/assets/symbols/place_of_worship/unknown.svg + - packages/mapsforge_flutter/assets/symbols/poi/cave.svg + - packages/mapsforge_flutter/assets/symbols/poi/embassy2.svg + - packages/mapsforge_flutter/assets/symbols/poi/mountain_pass.svg + - packages/mapsforge_flutter/assets/symbols/shopping/alcohol.svg + - packages/mapsforge_flutter/assets/symbols/shopping/bakery.svg + - packages/mapsforge_flutter/assets/symbols/shopping/bicycle.svg + - packages/mapsforge_flutter/assets/symbols/shopping/book.svg + - packages/mapsforge_flutter/assets/symbols/shopping/butcher.svg + - packages/mapsforge_flutter/assets/symbols/shopping/car_repair.svg + - packages/mapsforge_flutter/assets/symbols/shopping/convenience.svg + - packages/mapsforge_flutter/assets/symbols/shopping/diy.svg + - packages/mapsforge_flutter/assets/symbols/shopping/greengrocer.svg + - packages/mapsforge_flutter/assets/symbols/shopping/laundrette.svg + - packages/mapsforge_flutter/assets/symbols/shopping/marketplace.svg + - packages/mapsforge_flutter/assets/symbols/shopping/supermarket.svg + - packages/mapsforge_flutter/assets/symbols/sport/golf.svg + - packages/mapsforge_flutter/assets/symbols/sport/shooting.svg + - packages/mapsforge_flutter/assets/symbols/sport/soccer.svg + - packages/mapsforge_flutter/assets/symbols/sport/stadium.svg + - packages/mapsforge_flutter/assets/symbols/sport/swimming_outdoor.svg + - packages/mapsforge_flutter/assets/symbols/sport/tennis.svg + - packages/mapsforge_flutter/assets/symbols/tourist/archaeological2.svg + - packages/mapsforge_flutter/assets/symbols/tourist/attraction.svg + - packages/mapsforge_flutter/assets/symbols/tourist/castle2.svg + - packages/mapsforge_flutter/assets/symbols/tourist/cinema2.svg + - packages/mapsforge_flutter/assets/symbols/tourist/information.svg + - packages/mapsforge_flutter/assets/symbols/tourist/memorial.svg + - packages/mapsforge_flutter/assets/symbols/tourist/monument.svg + - packages/mapsforge_flutter/assets/symbols/tourist/museum.svg + - packages/mapsforge_flutter/assets/symbols/tourist/picnic.svg + - packages/mapsforge_flutter/assets/symbols/tourist/ruin.svg + - packages/mapsforge_flutter/assets/symbols/tourist/theatre.svg + - packages/mapsforge_flutter/assets/symbols/tourist/view_point.svg + - packages/mapsforge_flutter/assets/symbols/tourist/windmill.svg + - packages/mapsforge_flutter/assets/symbols/tourist/zoo.svg + - packages/mapsforge_flutter/assets/symbols/transport/airport2.svg + - packages/mapsforge_flutter/assets/symbols/transport/bus_station.svg + - packages/mapsforge_flutter/assets/symbols/transport/bus_stop.svg + - packages/mapsforge_flutter/assets/symbols/transport/fuel.svg + - packages/mapsforge_flutter/assets/symbols/transport/helicopter.svg + - packages/mapsforge_flutter/assets/symbols/transport/lighthouse.svg + - packages/mapsforge_flutter/assets/symbols/transport/parking.svg + - packages/mapsforge_flutter/assets/symbols/transport/parking_private.svg + - packages/mapsforge_flutter/assets/symbols/transport/rental_bicycle.svg + - packages/mapsforge_flutter/assets/symbols/transport/slipway.svg + - packages/mapsforge_flutter/assets/symbols/transport/traffic_lights.svg + - packages/mapsforge_flutter/assets/symbols/transport/train_station2.svg + - packages/mapsforge_flutter/assets/symbols/transport/tram_stop.svg + - packages/mapsforge_flutter/assets/symbols/water/weir.svg + - packages/mapsforge_flutter/assets/symbols/windsock.svg + - packages/mapsforge_flutter/assets/symbols/viewpoint.svg - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/assets-and-images/#resolution-aware. - - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/assets-and-images/#from-packages - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/custom-fonts/#from-packages + fonts: + - family: serif + fonts: + - asset: packages/mapsforge_flutter/assets/fonts/FreeSerif.otf + - asset: packages/mapsforge_flutter/assets/fonts/FreeSerifBold.otf + weight: 700 + - asset: packages/mapsforge_flutter/assets/fonts/FreeSerifBoldItalic.otf + style: italic + weight: 700 + - asset: packages/mapsforge_flutter/assets/fonts/FreeSerifItalic.otf + style: italic