play method

Future<void> play({
  1. required String source,
  2. required String playMethod,
  3. required String playArg,
  4. List<FetchResourceModel> fetchResources = const [],
})

Implementation

Future<void> play(
    {required String source, required String playMethod, required String playArg, List<
        FetchResourceModel> fetchResources = const []}) async {
  try {
    playCompleter = Completer<void>();
    /// 先设置融合动画参数再播放,不然会出现融合动画不起作用的问题
    await setFetchResources(fetchResources);

    await _methodChannel.invokeMethod(playMethod, {playArg: source});

    return playCompleter!.future.timeout(const Duration(seconds: 20),
        onTimeout: () {
          if (playCompleter?.isCompleted == true) return;
          playCompleter?.completeError(
              TimeoutException("wait play complete timeout"));
        });
  } catch (e, s) {
    playCompleter?.completeError(e, s);
  }
}