addCustomAsset method

Future<bool> addCustomAsset({
  1. XFile? file,
  2. String? url,
  3. required CustomAssetType type,
  4. String uniqueId = '',
  5. Widget customWidgetBuilder(
    1. BuildContext context,
    2. dynamic onPlay(),
    3. dynamic onPause(),
    4. ValueNotifier<bool> isPlay,
    )?,
})

Add Custom file widget asset

Implementation

Future<bool> addCustomAsset({
  XFile? file,
  String? url,
  required CustomAssetType type,
  String uniqueId = '',
  Widget Function(BuildContext context, Function() onPlay, Function() onPause,
          ValueNotifier<bool> isPlay)?
      customWidgetBuilder,
}) async {
  final Completer<bool> completer = Completer<bool>();
  assert(file != null || url != null);
  switch (type) {
    case CustomAssetType.image:
      assets.addAsset(
        StoryElement(
          type: ItemType.image,
          position: const Offset(0.25, 0.25),
          value: file?.path ?? url ?? '',
          elementFile: file ?? XFile(url ?? ''),
          customWidgetUniqueID: uniqueId,
        ),
      );
      completer.complete(true);
      break;
    case CustomAssetType.video:
      if (file != null && _isAvailableToAddVideo) {
        unawaited(showVideoOverlay(
          videoFile: file,
          editorController: this,
          uniqueId: uniqueId,
          completer: completer,
        ));
      }
      break;
    case CustomAssetType.audio:
      unawaited(showAudioOverlay(
        audioFile: file,
        audioUrl: url,
        editorController: this,
        uniqueId: uniqueId,
        customWidgetBuilder: customWidgetBuilder,
        completer: completer,
      ));
      break;
  }
  return completer.future;
}