mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 16:28:40 +00:00
fix #169
This commit is contained in:
parent
b6502ca8d0
commit
50c859f13f
1 changed files with 22 additions and 25 deletions
|
|
@ -47,6 +47,10 @@ class _CameraPreviewViewState extends State<CameraPreviewView> {
|
||||||
bool videoWithAudio = true;
|
bool videoWithAudio = true;
|
||||||
DateTime? videoRecordingStarted;
|
DateTime? videoRecordingStarted;
|
||||||
Timer? videoRecordingTimer;
|
Timer? videoRecordingTimer;
|
||||||
|
|
||||||
|
double _minAvailableZoom = 1.0;
|
||||||
|
double _maxAvailableZoom = 1.0;
|
||||||
|
|
||||||
DateTime currentTime = DateTime.now();
|
DateTime currentTime = DateTime.now();
|
||||||
final GlobalKey keyTriggerButton = GlobalKey();
|
final GlobalKey keyTriggerButton = GlobalKey();
|
||||||
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
|
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
|
||||||
|
|
@ -109,7 +113,10 @@ class _CameraPreviewViewState extends State<CameraPreviewView> {
|
||||||
}
|
}
|
||||||
setState(() {
|
setState(() {
|
||||||
isZoomAble = false;
|
isZoomAble = false;
|
||||||
scaleFactor = 1;
|
if (cameraId != sCameraId) {
|
||||||
|
// switch between front and back
|
||||||
|
scaleFactor = 1;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
controller = CameraController(
|
controller = CameraController(
|
||||||
gCameras[sCameraId],
|
gCameras[sCameraId],
|
||||||
|
|
@ -120,9 +127,17 @@ class _CameraPreviewViewState extends State<CameraPreviewView> {
|
||||||
if (!mounted) {
|
if (!mounted) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await controller!.setZoomLevel(scaleFactor);
|
||||||
await controller?.lockCaptureOrientation(DeviceOrientation.portraitUp);
|
await controller?.lockCaptureOrientation(DeviceOrientation.portraitUp);
|
||||||
controller?.setFlashMode(isFlashOn ? FlashMode.always : FlashMode.off);
|
controller?.setFlashMode(isFlashOn ? FlashMode.always : FlashMode.off);
|
||||||
|
|
||||||
|
controller
|
||||||
|
?.getMaxZoomLevel()
|
||||||
|
.then((double value) => _maxAvailableZoom = value);
|
||||||
|
controller
|
||||||
|
?.getMinZoomLevel()
|
||||||
|
.then((double value) => _minAvailableZoom = value);
|
||||||
isZoomAble = await controller?.getMinZoomLevel() !=
|
isZoomAble = await controller?.getMinZoomLevel() !=
|
||||||
await controller?.getMaxZoomLevel();
|
await controller?.getMaxZoomLevel();
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|
@ -147,16 +162,8 @@ class _CameraPreviewViewState extends State<CameraPreviewView> {
|
||||||
|
|
||||||
Future<void> updateScaleFactor(double newScale) async {
|
Future<void> updateScaleFactor(double newScale) async {
|
||||||
if (scaleFactor == newScale || controller == null) return;
|
if (scaleFactor == newScale || controller == null) return;
|
||||||
var minFactor = await controller!.getMinZoomLevel();
|
await controller
|
||||||
var maxFactor = await controller!.getMaxZoomLevel();
|
?.setZoomLevel(newScale.clamp(_minAvailableZoom, _maxAvailableZoom));
|
||||||
if (newScale < minFactor) {
|
|
||||||
newScale = minFactor;
|
|
||||||
}
|
|
||||||
if (newScale > maxFactor) {
|
|
||||||
newScale = maxFactor;
|
|
||||||
}
|
|
||||||
|
|
||||||
await controller?.setZoomLevel(newScale);
|
|
||||||
setState(() {
|
setState(() {
|
||||||
scaleFactor = newScale;
|
scaleFactor = newScale;
|
||||||
});
|
});
|
||||||
|
|
@ -279,22 +286,12 @@ class _CameraPreviewViewState extends State<CameraPreviewView> {
|
||||||
if (isFront) {
|
if (isFront) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var diff = basePanY - details.localPosition.dy;
|
|
||||||
|
|
||||||
var baseDiff = Platform.isAndroid ? 200.0 : 300.0;
|
scaleFactor = (baseScaleFactor + (basePanY - details.localPosition.dy) / 30)
|
||||||
|
.clamp(1, _maxAvailableZoom);
|
||||||
|
|
||||||
if (diff > baseDiff) diff = baseDiff;
|
await controller!.setZoomLevel(scaleFactor);
|
||||||
if (diff < -baseDiff) diff = -baseDiff;
|
setState(() {});
|
||||||
var tmp = 0.0;
|
|
||||||
if (Platform.isAndroid) {
|
|
||||||
tmp = (diff / baseDiff * (7 * 2)).toInt() / 2;
|
|
||||||
} else {
|
|
||||||
tmp = (diff / baseDiff * (14 * 2)).toInt() / 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = baseScaleFactor + tmp;
|
|
||||||
if (tmp < 1) tmp = 1;
|
|
||||||
updateScaleFactor(tmp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Future pickImageFromGallery() async {
|
Future pickImageFromGallery() async {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue