Skip to content

Commit 3fae3a4

Browse files
committed
⚡ Integrating isAllowRecording.
1 parent efc8eeb commit 3fae3a4

File tree

1 file changed

+35
-28
lines changed

1 file changed

+35
-28
lines changed

lib/src/widget/camera_picker.dart

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import 'package:flutter/material.dart';
1010
import 'package:flutter/services.dart';
1111
import 'package:camera/camera.dart';
1212
import 'package:path_provider/path_provider.dart';
13-
import 'package:wechat_camera_picker/wechat_camera_picker.dart';
1413

1514
import '../constants/constants.dart';
1615
import '../widget/circular_progress_bar.dart';
@@ -175,6 +174,10 @@ class _CameraPickerState extends State<CameraPicker> {
175174
/// 拍照的文件是否应该保存在本地(非空包装)
176175
bool get shouldKeptInLocal => widget.shouldKeptInLocal ?? false;
177176

177+
/// Whether the picker can record video. (A non-null wrapper)
178+
/// 选择器是否可以录像(非空包装)
179+
bool get isAllowRecording => widget.isAllowRecording ?? false;
180+
178181
/// A getter to the current [CameraDescription].
179182
/// 获取当前相机实例
180183
CameraDescription get currentCamera => cameras?.elementAt(currentCameraIndex);
@@ -431,35 +434,39 @@ class _CameraPickerState extends State<CameraPicker> {
431434
final Size outerSize = Size.square(Screens.width / 3.5);
432435
return Listener(
433436
behavior: HitTestBehavior.opaque,
434-
onPointerUp: (PointerUpEvent event) {
435-
recordDetectTimer?.cancel();
436-
if (isRecording) {
437-
isRecording = false;
438-
if (mounted) {
439-
setState(() {});
440-
}
441-
}
442-
if (isShootingButtonAnimate) {
443-
isShootingButtonAnimate = false;
444-
if (mounted) {
445-
setState(() {});
446-
}
447-
}
448-
},
437+
onPointerUp: isAllowRecording
438+
? (PointerUpEvent event) {
439+
recordDetectTimer?.cancel();
440+
if (isRecording) {
441+
isRecording = false;
442+
if (mounted) {
443+
setState(() {});
444+
}
445+
}
446+
if (isShootingButtonAnimate) {
447+
isShootingButtonAnimate = false;
448+
if (mounted) {
449+
setState(() {});
450+
}
451+
}
452+
}
453+
: null,
449454
child: InkWell(
450455
borderRadius: maxBorderRadius,
451-
onTap: () {},
452-
onLongPress: () {
453-
recordDetectTimer = Timer(recordDetectDuration, () {
454-
isRecording = true;
455-
if (mounted) {
456-
setState(() {});
457-
}
458-
});
459-
setState(() {
460-
isShootingButtonAnimate = true;
461-
});
462-
},
456+
onTap: takePicture,
457+
onLongPress: isAllowRecording
458+
? () {
459+
recordDetectTimer = Timer(recordDetectDuration, () {
460+
isRecording = true;
461+
if (mounted) {
462+
setState(() {});
463+
}
464+
});
465+
setState(() {
466+
isShootingButtonAnimate = true;
467+
});
468+
}
469+
: null,
463470
child: SizedBox.fromSize(
464471
size: outerSize,
465472
child: Stack(

0 commit comments

Comments
 (0)