Untitled
unknown
plain_text
5 months ago
4.8 kB
3
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 '../../../../core/res/colours.dart'; import '../../../../core/res/fonts.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, required this.handleRefresh, }); final TabController tabController; final Completer<GoogleMapController> gController; final FindState state; final Future<void> Function() handleRefresh; double calculateMarkerSize(double zoom) { if (zoom <= 10) { return 20.0; } else if (zoom <= 15) { return 30.0; } else { return 40.0; } } @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: [ // List View Tab (chargerStationProvider.chargeStations != null && chargerStationProvider.chargeStations!.isNotEmpty) ? ListPageView( chargeStations: (state is FilteredChargeStationsLoaded) ? chargerStationProvider.filterListChargeStations! : chargerStationProvider.chargeStations!, handleRefresh: handleRefresh, ) : const LoadingView(), // Map View Tab Consumer<HomeProvider>(builder: (_, homeProvider, __) { return (state is FindLoading || (state is! MarkersLoaded && state is! OpenMapsNavigationSuccess && state is! AddFavoriteChargeStationsSuccess && state is! DeleteFavoriteChargeStationsSuccess)) ? 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: 16, ), onMapCreated: (GoogleMapController controller) async { if (!gController.isCompleted) { gController.complete(controller); } // WidgetsBinding.instance.addPostFrameCallback((_) async { // if (chargerStationProvider.markers.isNotEmpty) { // context.read<FindBloc>().add(LoadMarkersEvent( // chargerStationProvider.chargeStations!, // )); // print('Markers loaded'); // } // }); }, markers: chargerStationProvider.markers, ); }), // Favorite Tab (chargerStationProvider.favoriteChargeStations != null && chargerStationProvider.favoriteChargeStations!.isNotEmpty) ? FavoritePageView( favoriteChargeStations: chargerStationProvider.favoriteChargeStations!, handleRefresh: handleRefresh, ) : const Center( child: Text( 'No favorite charge stations', style: TextStyle( fontFamily: Fonts.poppins, fontSize: 16, fontWeight: FontWeight.w500, color: Colours.blackColour), ), ), ], ), ); }); } }
Editor is loading...
Leave a Comment