【发布时间】:2020-02-28 09:47:29
【问题描述】:
假设 audioplayers|lib/audio_cache.dart 仅适用于 Android/iOS,我有条件地排除从 Dart 文件中导入以下内容:
import "package:audioplayers/audio_cache.dart"
通过以下方式:
import "dart:math" if (dart.library.io) "package:audioplayers/audio_cache.dart";
其中“dart:math”可以是任何 fake_stub Dart 文件。简而言之,这在 Flutter 中只为移动设备导入了一个库。详情here(感谢Alois Deniel!)。
在 Flutter-Web 实现中隐藏特定于平台的代码的最佳方法是什么?
import 'dart:io' show Platform;
bool isMobile() => Platform.isAndroid || Platform.isIOS;
class _MyPageState extends State<MyPage> {
dynamic _audioPlayer;
@override
void initState() {
if (isMobile()) {
_audioPlayer = AudioCache(prefix: 'sounds/');
_audioPlayer.load('mysound.mp3');
}
}
}
这种天真的尝试当然在AudioCache 参考上失败了。
Error: Method not found: 'AudioCache'.
_audioPlayer = AudioCache(prefix: 'sounds/');
【问题讨论】:
-
我知道这不是问题的核心,只是一个例子,但我刚刚更新了 audioplayers 包中的 AudioCache 类以完全支持 web :)
标签: flutter dart import flutter-web