簡體   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