camera_engine.dart 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. lockCaptureOrientation: DeviceOrientation.portraitUp,
  44. onlyEnableRecording: true,
  45. enableTapRecording: false,
  46. enableAudio: true,
  47. shouldAutoPreviewVideo: true,
  48. maximumRecordingDuration: Duration(seconds: maxRecordInSeconds),
  49. theme: ThemeData(
  50. brightness: Brightness.dark,
  51. colorScheme: const ColorScheme.dark(
  52. secondary: AppColorsTheme.colorPrimary,
  53. ),
  54. appBarTheme: AppBarTheme(
  55. systemOverlayStyle: SystemUiOverlayStyle.light.copyWith(
  56. statusBarColor: Colors.transparent,
  57. statusBarBrightness: Brightness.dark,
  58. statusBarIconBrightness: Brightness.light,
  59. ),
  60. ),
  61. ),
  62. ),
  63. );
  64. }
  65. }