70 lines
2.0 KiB
Dart
70 lines
2.0 KiB
Dart
import 'package:get/get.dart';
|
|
import 'package:ride/constant/box_name.dart';
|
|
import 'dart:async';
|
|
|
|
import '../../../constant/links.dart';
|
|
import '../../../main.dart';
|
|
import '../../functions/crud.dart';
|
|
import '../../functions/location_controller.dart';
|
|
|
|
class HomeCaptainController extends GetxController {
|
|
bool isActive = false;
|
|
DateTime? activeStartTime;
|
|
Duration activeDuration = Duration.zero;
|
|
Timer? activeTimer;
|
|
// Inject the LocationController class
|
|
final locationController = Get.find<LocationController>();
|
|
|
|
void onButtonSelected() {
|
|
isActive = !isActive;
|
|
if (isActive) {
|
|
locationController.startLocationUpdates();
|
|
activeStartTime = DateTime.now();
|
|
activeTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
|
|
activeDuration = DateTime.now().difference(activeStartTime!);
|
|
update();
|
|
});
|
|
} else {
|
|
locationController.stopLocationUpdates();
|
|
|
|
activeStartTime = null;
|
|
activeTimer?.cancel();
|
|
savePeriod(activeDuration);
|
|
activeDuration = Duration.zero;
|
|
}
|
|
update();
|
|
}
|
|
|
|
void savePeriod(Duration period) {
|
|
final periods = box.read<List<dynamic>>(BoxName.periods) ?? [];
|
|
periods.add(period.inSeconds);
|
|
box.write(BoxName.periods, periods);
|
|
}
|
|
|
|
Duration calculateTotalDuration() {
|
|
final periods = box.read<List<dynamic>>(BoxName.periods) ?? [];
|
|
Duration totalDuration = Duration.zero;
|
|
for (dynamic periodInSeconds in periods) {
|
|
final periodDuration = Duration(seconds: periodInSeconds);
|
|
totalDuration += periodDuration;
|
|
}
|
|
return totalDuration;
|
|
}
|
|
|
|
@override
|
|
void onInit() async {
|
|
await CRUD().post(link: AppLink.addTokensDriver, payload: {
|
|
'token': box.read(BoxName.tokenDriver),
|
|
'captain_id': box.read(BoxName.driverID).toString()
|
|
}).then((value) => print('cccc'));
|
|
box.write(BoxName.statusDriverLocation, 'off');
|
|
super.onInit();
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
activeTimer?.cancel();
|
|
super.dispose();
|
|
}
|
|
}
|