camera_engine.dart 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import 'package:cs_resources/theme/app_colors_theme.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:wechat_camera_picker/wechat_camera_picker.dart';
  4. import 'package:flutter/services.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. locale: Localizations.localeOf(context),
  14. pickerConfig: CameraPickerConfig(
  15. enableRecording: false,
  16. lockCaptureOrientation: DeviceOrientation.portraitUp,
  17. theme: ThemeData(
  18. brightness: Brightness.dark,
  19. colorScheme: const ColorScheme.dark(
  20. secondary: AppColorsTheme.colorPrimary, //内部按钮是这个颜色
  21. ),
  22. appBarTheme: AppBarTheme(
  23. systemOverlayStyle: SystemUiOverlayStyle.dark.copyWith(
  24. statusBarColor: Colors.transparent,
  25. statusBarBrightness: Brightness.dark,
  26. statusBarIconBrightness: Brightness.light,
  27. ),
  28. ),
  29. ),
  30. ),
  31. );
  32. }
  33. /// 录制视频
  34. static Future<AssetEntity?> takeVideo(
  35. BuildContext context, {
  36. int maxRecordInSeconds = 30,
  37. }) async {
  38. return await CameraPicker.pickFromCamera(
  39. context,
  40. locale: Localizations.localeOf(context),
  41. pickerConfig: CameraPickerConfig(
  42. enableRecording: true,
  43. onlyEnableRecording: true,
  44. enableTapRecording: false,
  45. enableAudio: true,
  46. shouldAutoPreviewVideo: true,
  47. maximumRecordingDuration: Duration(seconds: maxRecordInSeconds),
  48. theme: ThemeData(
  49. brightness: Brightness.dark,
  50. colorScheme: const ColorScheme.dark(
  51. secondary: AppColorsTheme.colorPrimary,
  52. ),
  53. appBarTheme: AppBarTheme(
  54. systemOverlayStyle: SystemUiOverlayStyle.light.copyWith(
  55. statusBarColor: Colors.transparent,
  56. statusBarBrightness: Brightness.dark,
  57. statusBarIconBrightness: Brightness.light,
  58. ),
  59. ),
  60. ),
  61. ),
  62. );
  63. }
  64. }