camera_engine.dart 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import 'package:flutter/material.dart';
  2. import 'package:wechat_camera_picker/wechat_camera_picker.dart';
  3. import 'package:flutter/services.dart';
  4. import 'package:get/get.dart';
  5. /*
  6. * 照相机的引擎封装,目前用的 CameraPicker 插件
  7. */
  8. class CameraEngine {
  9. /// 拍照
  10. static Future<AssetEntity?> takePhoto(BuildContext context) async {
  11. return await CameraPicker.pickFromCamera(
  12. context,
  13. pickerConfig: CameraPickerConfig(
  14. enableRecording: false,
  15. theme: ThemeData(
  16. brightness: Brightness.dark,
  17. appBarTheme: AppBarTheme(
  18. systemOverlayStyle: SystemUiOverlayStyle.dark.copyWith(
  19. statusBarColor: Colors.transparent,
  20. statusBarBrightness: Brightness.dark,
  21. statusBarIconBrightness: Brightness.light,
  22. ),
  23. ),
  24. ),
  25. ),
  26. );
  27. }
  28. /// 录制视频
  29. static Future<AssetEntity?> takeVideo(
  30. BuildContext context, {
  31. int maxRecordInSeconds = 30,
  32. }) async {
  33. return await CameraPicker.pickFromCamera(
  34. context,
  35. pickerConfig: CameraPickerConfig(
  36. enableRecording: true,
  37. onlyEnableRecording: true,
  38. enableTapRecording: false,
  39. enableAudio: true,
  40. shouldAutoPreviewVideo: true,
  41. maximumRecordingDuration: Duration(seconds: maxRecordInSeconds),
  42. theme: ThemeData(
  43. brightness: Brightness.dark,
  44. appBarTheme: AppBarTheme(
  45. systemOverlayStyle: SystemUiOverlayStyle.dark.copyWith(
  46. statusBarColor: Colors.transparent,
  47. statusBarBrightness: Brightness.dark,
  48. statusBarIconBrightness: Brightness.light,
  49. ),
  50. ),
  51. ),
  52. ),
  53. );
  54. }
  55. }