Untitled
unknown
plain_text
a year ago
4.8 kB
6
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