import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:wechat_assets_picker/wechat_assets_picker.dart'; /* * 本地图库的引擎封装,目前用的 wechat_assets_picker 插件 */ class AlbumEngine { /// 选择图片 static Future?> selectImage( BuildContext context, { int maxAssets = 9, List? selected, int filterMinWidth = 100, int filterMaxWidth = 100000, int filterMinHeight = 100, int filterMaxHeight = 100000, }) async { FilterOptionGroup filterOptions = FilterOptionGroup() ..setOption( AssetType.image, FilterOption( sizeConstraint: SizeConstraint( minWidth: filterMinWidth, maxWidth: filterMaxWidth, minHeight: filterMinHeight, maxHeight: filterMaxHeight, ), ), ); return AssetPicker.pickAssets( context, pickerConfig: AssetPickerConfig( requestType: RequestType.image, selectedAssets: selected, maxAssets: maxAssets, filterOptions: filterOptions, gridCount: 4, pageSize: 40, pickerTheme: ThemeData( brightness: Brightness.dark, appBarTheme: AppBarTheme( systemOverlayStyle: SystemUiOverlayStyle.dark.copyWith( statusBarColor: Colors.transparent, statusBarBrightness: Brightness.dark, statusBarIconBrightness: Brightness.light, ), ), ), ), ); } /// 选择视频 static Future?> selectVideo( BuildContext context, { int maxAssets = 1, List? selected, int filterMinWidth = 100, int filterMaxWidth = 100000, int filterMinHeight = 100, int filterMaxHeight = 100000, int filterMaxSeconds = 60, //默认能选择60秒以内的视频 }) async { FilterOptionGroup filterOptions = FilterOptionGroup() ..setOption( AssetType.video, FilterOption( sizeConstraint: SizeConstraint( minWidth: filterMinWidth, maxWidth: filterMaxWidth, minHeight: filterMinHeight, maxHeight: filterMaxHeight, ), durationConstraint: DurationConstraint(max: Duration(seconds: filterMaxSeconds))), ); return AssetPicker.pickAssets( context, pickerConfig: AssetPickerConfig( requestType: RequestType.video, selectedAssets: selected, maxAssets: maxAssets, filterOptions: filterOptions, gridCount: 4, pageSize: 40, pickerTheme: ThemeData( brightness: Brightness.dark, appBarTheme: AppBarTheme( systemOverlayStyle: SystemUiOverlayStyle.dark.copyWith( statusBarColor: Colors.transparent, statusBarBrightness: Brightness.dark, statusBarIconBrightness: Brightness.light, ), ), ), ), ); } }