How to show recording time in flutter?

Viewed 345

How can I show the time of a recording video in flutter. I am using the camera(^0.9.4+16) package.

        Future<String?> _startVideoRecording() async {
          
            if (!controller!.value.isInitialized) {
              Fluttertoast.showToast(
                  msg: 'Please wait',
                  toastLength: Toast.LENGTH_SHORT,
                  gravity: ToastGravity.CENTER,
                  timeInSecForIosWeb: 1,
                  backgroundColor: Colors.grey,
                  textColor: Colors.white);
        
              return null;
            }
            // Do nothing if a recording is on progress
            if (controller!.value.isRecordingVideo) {
        
              return null;
            }
        
            final Directory appDirectory = await getApplicationDocumentsDirectory();
            final String videoDirectory = '${appDirectory.path}/Videos';
            await Directory(videoDirectory).create(recursive: true);
            final String currentTime = DateTime.now().millisecondsSinceEpoch.toString();
            final String filePath = '$videoDirectory/${currentTime}.mp4';
        
            try {
              await controller!.startVideoRecording();
              videoPath = filePath;
            } on CameraException catch (e) {
              _showCameraException(e);
              return null;
            }
        
            return file Path;
          }

Here is an example image.

1 Answers
  String recordingTime = '0:0'; // to store value
  bool isRecording = false;

  void recordTime() {
    var startTime = DateTime.now();
    Timer.periodic(const Duration(seconds: 1), (Timer t) {
      var diff = DateTime.now().difference(startTime);

      recordingTime =
          '${diff.inHours < 60 ? diff.inHours : 0}:${diff.inMinutes < 60 ? diff.inMinutes : 0}:${diff.inSeconds < 60 ? diff.inSeconds : 0}';

      print(recordingTime);

      if (!isRecording) {
        t.cancel(); //cancel function calling
      }

      setState(() {});
    });
  }

now use recordingTime

Related