showAudioOverlay function

Future<void> showAudioOverlay({
  1. XFile? audioFile,
  2. String? audioUrl,
  3. required EditorController editorController,
  4. String uniqueId = '',
  5. Widget customWidgetBuilder(
    1. BuildContext context,
    2. dynamic onPlay(),
    3. dynamic onPause(),
    4. ValueNotifier<bool> isPlay,
    )?,
  6. required Completer<bool> completer,
})

Implementation

Future<void> showAudioOverlay({
  XFile? audioFile,
  String? audioUrl,
  required EditorController editorController,
  String uniqueId = '',
  Widget Function(BuildContext context, Function() onPlay, Function() onPause,
          ValueNotifier<bool> isPlay)?
      customWidgetBuilder,
  required Completer<bool> completer,
}) async {
  assert(audioFile != null || audioUrl != null);
  if (_overlayAnimationController == null) {
    return;
  }
  _editorController = editorController;
  const Curve curve = Curves.easeOut;
  editorController.isShowingOverlay.value = true;
  _overlayEntry = OverlayEntry(
    builder: (BuildContext context) {
      return AnimatedBuilder(
        animation: _overlayAnimationController!,
        builder: (BuildContext context, Widget? child) {
          final double animationValue =
              curve.transform(_overlayAnimationController!.value);

          return Opacity(
            opacity: animationValue,
            child: AudioOverlay(
              editorController: editorController,
              file: audioFile,
              url: audioUrl,
              uniqueId: uniqueId,
              screen: MediaQuery.of(context).size,
              customWidgetBuilder: customWidgetBuilder,
              completer: completer,
            ),
          );
        },
      );
    },
  );
  if (_overlayEntry != null) {
    await addToOverlay(_overlayEntry!);
    await _overlayAnimationController!.forward();
  }
}