zefyr

asset_picker_viewer.dart 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. part of ct_assets_picker;
  2. class ExtendedAssetPickerViewer<A, P> extends AssetPickerViewer<A, P> {
  3. const ExtendedAssetPickerViewer({
  4. Key key,
  5. @required AssetPickerViewerBuilderDelegate<A, P> builder,
  6. }) : super(key: key, builder: builder);
  7. static Future<List<AssetEntity>> pushToViewer(
  8. BuildContext context, {
  9. int currentIndex = 0,
  10. @required List<AssetEntity> previewAssets,
  11. @required ThemeData themeData,
  12. List<int> previewThumbSize,
  13. List<AssetEntity> selectedAssets,
  14. DefaultAssetPickerProvider selectorProvider,
  15. SpecialPickerType specialPickerType,
  16. }) async {
  17. try {
  18. final Widget viewer =
  19. ChangeNotifierProvider<DefaultAssetPickerProvider>.value(
  20. value: selectorProvider,
  21. child: AssetPickerViewer<AssetEntity, AssetPathEntity>(
  22. builder: ExtendedAssetPickerViewerBuilderDelegate(
  23. currentIndex: currentIndex,
  24. previewAssets: previewAssets,
  25. provider: selectedAssets != null
  26. ? AssetPickerViewerProvider<AssetEntity>(selectedAssets)
  27. : null,
  28. themeData: themeData,
  29. previewThumbSize: previewThumbSize,
  30. specialPickerType: specialPickerType,
  31. selectedAssets: selectedAssets,
  32. selectorProvider: selectorProvider,
  33. ),
  34. ),
  35. );
  36. final PageRouteBuilder<List<AssetEntity>> pageRoute =
  37. PageRouteBuilder<List<AssetEntity>>(
  38. pageBuilder: (
  39. BuildContext context,
  40. Animation<double> animation,
  41. Animation<double> secondaryAnimation,
  42. ) {
  43. return viewer;
  44. },
  45. transitionsBuilder: (
  46. BuildContext context,
  47. Animation<double> animation,
  48. Animation<double> secondaryAnimation,
  49. Widget child,
  50. ) {
  51. return FadeTransition(opacity: animation, child: child);
  52. },
  53. );
  54. final List<AssetEntity> result =
  55. await Navigator.of(context).push<List<AssetEntity>>(pageRoute);
  56. return result;
  57. } catch (e) {
  58. realDebugPrint('Error when calling assets picker viewer: $e');
  59. return null;
  60. }
  61. }
  62. }