maps_page_view (refactors)
unknown
dart
a year ago
3.7 kB
4
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