@@ -10,7 +10,6 @@ import 'package:flutter/material.dart';
10
10
import 'package:flutter/services.dart' ;
11
11
import 'package:camera/camera.dart' ;
12
12
import 'package:path_provider/path_provider.dart' ;
13
- import 'package:wechat_camera_picker/wechat_camera_picker.dart' ;
14
13
15
14
import '../constants/constants.dart' ;
16
15
import '../widget/circular_progress_bar.dart' ;
@@ -175,6 +174,10 @@ class _CameraPickerState extends State<CameraPicker> {
175
174
/// 拍照的文件是否应该保存在本地(非空包装)
176
175
bool get shouldKeptInLocal => widget.shouldKeptInLocal ?? false ;
177
176
177
+ /// Whether the picker can record video. (A non-null wrapper)
178
+ /// 选择器是否可以录像(非空包装)
179
+ bool get isAllowRecording => widget.isAllowRecording ?? false ;
180
+
178
181
/// A getter to the current [CameraDescription] .
179
182
/// 获取当前相机实例
180
183
CameraDescription get currentCamera => cameras? .elementAt (currentCameraIndex);
@@ -431,35 +434,39 @@ class _CameraPickerState extends State<CameraPicker> {
431
434
final Size outerSize = Size .square (Screens .width / 3.5 );
432
435
return Listener (
433
436
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 ,
449
454
child: InkWell (
450
455
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 ,
463
470
child: SizedBox .fromSize (
464
471
size: outerSize,
465
472
child: Stack (
0 commit comments