maps_page_view (refactors)
unknown
dart
5 months ago
3.7 kB
1
Indexable
import 'dart:async'; import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:provider/provider.dart'; import '../../../../core/common/app/providers/charge_stations_provider.dart'; import '../../../../core/common/app/providers/home_provider.dart'; import '../../../../core/common/views/loading_view.dart'; import '../bloc/find_bloc.dart'; import 'favorite_page_view.dart'; import 'list_page_view.dart'; class MapsPageView extends StatelessWidget { const MapsPageView({ super.key, required this.tabController, required this.gController, required this.state, }); final TabController tabController; final Completer<GoogleMapController> gController; final FindState state; double calculateMarkerSize(double zoom) { if (zoom <= 10) { return 20.0; } else if (zoom <= 15) { return 30.0; } else { return 40.0; } } // Set<Marker> _markers = {}; @override Widget build(BuildContext context) { return Consumer<ChargeStationsProvider>( builder: (_, chargerStationProvider, __) { return SizedBox( width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.height, child: TabBarView( controller: tabController, physics: const NeverScrollableScrollPhysics(), children: [ (chargerStationProvider.chargeStations != null) ? ListPageView( chargeStations: chargerStationProvider.chargeStations!, ) : const LoadingView(), Consumer<HomeProvider>(builder: (_, homeProvider, __) { return state is FindLoading || state is! MarkersLoaded ? const LoadingView() : GoogleMap( mapType: MapType.normal, padding: EdgeInsets.only( top: MediaQuery.of(context).size.height * 0.2), myLocationButtonEnabled: true, myLocationEnabled: true, initialCameraPosition: CameraPosition( target: LatLng(homeProvider.position!.latitude, homeProvider.position!.longitude), zoom: 14.4746, ), onMapCreated: (GoogleMapController controller) async { if (!gController.isCompleted) { gController.complete(controller); } WidgetsBinding.instance.addPostFrameCallback((_) async { for (var chargeStation in chargerStationProvider.chargeStations!) { await controller.showMarkerInfoWindow( MarkerId(chargeStation.id)); } }); }, markers: chargerStationProvider.markers, ); }), (chargerStationProvider.favoriteChargeStations != null) ? (chargerStationProvider.favoriteChargeStations!.isNotEmpty == true) ? FavoritePageView( favoriteChargeStations: chargerStationProvider.favoriteChargeStations!, ) : const Center(child: Text("No favorite charge stations")) : const LoadingView(), ], ), ); }); } }
Editor is loading...
Leave a Comment