53 lines
1.2 KiB
Dart
53 lines
1.2 KiB
Dart
import 'dart:ui';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:terepi_seged/pages/tracking/presentation/controllers/tracking_controller.dart';
|
|
|
|
import 'track_recording_action_visual.dart';
|
|
|
|
class TrackRecordingAction extends StatelessWidget {
|
|
final TrackingController controller;
|
|
final VoidCallback? onTap;
|
|
final VoidCallback? onLongPress;
|
|
|
|
const TrackRecordingAction({
|
|
super.key,
|
|
required this.controller,
|
|
this.onTap,
|
|
this.onLongPress,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Obx(() {
|
|
return TrackRecordingActionVisual(
|
|
isRecording: controller.isRecording.value,
|
|
isPaused: controller.isPaused.value,
|
|
elapsedText: _shortElapsedText(controller.elapsedFormatted.value),
|
|
onTap: onTap,
|
|
onLongPress: onLongPress,
|
|
);
|
|
});
|
|
}
|
|
|
|
String _shortElapsedText(String value) {
|
|
// A controller most HH:MM:SS formátumot ad, pl. 00:38:37.
|
|
final parts = value.split(':');
|
|
|
|
if (parts.length != 3) {
|
|
return value;
|
|
}
|
|
|
|
final h = int.tryParse(parts[0]) ?? 0;
|
|
final m = parts[1];
|
|
final s = parts[2];
|
|
|
|
if (h <= 0) {
|
|
return '$m:$s'; // 38:37
|
|
}
|
|
|
|
return '$h:$m'; // 1:04
|
|
}
|
|
}
|