繁体   English   中英

条件导入和 Dart_VLC

[英]Conditional imports and Dart_VLC

我正在开发 Web/Windows/Android 应用程序并播放我正在使用的 just_audio 的声音片段。 但是,windows 的 just_audio 已弃用。

要解决此问题,我只想将 Dart_VLC 用于 windows。 但是,如果完全导入,应用程序将崩溃并出现以下错误(完整跟踪https://pastebin.com/qNrW3ghK ):

LateInitializationError: Field 'dynamicLibrary' has not been initialized.

我发现有条件的导入在一定程度上解决了这个问题。

import 'metronome_finder.dart'
    if (dart.library.io) 'windows_metronome.dart'
    if (dart.library.js) 'generic_metronome.dart';

这(以及一个抽象、两个类和一个存根)适用于 Web/Windows。 但是,在 android 上,似乎加载了 dart.library.io 并且还将导入 dart_vlc,导致应用程序崩溃并出现上述错误。 有没有办法只在 windows(以及 dart_vlc)上导入 windows 节拍器并在所有其他平台上通用?

或者还有另一种更清洁的方法来解决这个问题吗?

我也在reddit上问过这个问题,部分感谢 /u/bsutto 现在有一个解决方案(或解决方法)。

我已经根据自己的项目编写了一个示例 这里的核心启示是 dart_vlc 的导入破坏了 web 上的编译,但是 dart_vlc 的初始化在运行时崩溃了。 因此,可以使用条件导入将 web 指向 just_audio; 和运行时 Platform.isWindows 检查以将 android 重定向到 JustAudio。

我认为,这样做的主要缺点是整个 dart_vlc 也被编译到 andoird 应用程序中。 如果我错了,请纠正我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM