diff --git a/lib/src/trim_editor.dart b/lib/src/trim_editor.dart index 92d1f304..a9f6f1e8 100644 --- a/lib/src/trim_editor.dart +++ b/lib/src/trim_editor.dart @@ -1,3 +1,4 @@ +import 'dart:async'; import 'dart:io'; import 'package:flutter/material.dart'; @@ -242,6 +243,8 @@ class _TrimEditorState extends State with TickerProviderStateMixin { AnimationController _animationController; Tween _linearTween; + final _refreshVideoDuration = Duration(milliseconds: 50); + Future _initializeVideoController() async { if (_videoFile != null) { videoPlayerController.addListener(() { @@ -334,7 +337,7 @@ class _TrimEditorState extends State with TickerProviderStateMixin { _refreshEnd(); }); await videoPlayerController.pause(); - await videoPlayerController.seekTo(Duration(milliseconds: _videoEndPos.toInt())); + await videoPlayerController.seekTo(Duration(milliseconds: _videoEndPos.toInt()) - _refreshVideoDuration); _linearTween.end = _endPos.dx; _animationController.duration = Duration(milliseconds: (_videoEndPos - _videoStartPos).toInt()); _animationController.reset(); @@ -471,10 +474,11 @@ class _TrimEditorState extends State with TickerProviderStateMixin { } } }, - onHorizontalDragEnd: (DragEndDetails details) { + onHorizontalDragEnd: (DragEndDetails details) async { setState(() { _circleSize = widget.circleSize; }); + await _refreshVideoIfNeeded(); }, onHorizontalDragUpdate: (DragUpdateDetails details) { _circleSize = widget.circleSizeOnDrag; @@ -552,4 +556,13 @@ class _TrimEditorState extends State with TickerProviderStateMixin { ), ); } + + _refreshVideoIfNeeded() async { + if (Platform.isIOS) { + await videoPlayerController.play(); + Timer(_refreshVideoDuration, () { + videoPlayerController.pause(); + }); + } + } }