【发布时间】:2021-06-27 14:07:52
【问题描述】:
无法在线查找有关此内容的信息。我只是想弄清楚 Dart 隔离中的特定功能是否正在运行。我知道如何做到这一点的唯一方法是使用print() 函数,但是我的函数没有运行,或者来自隔离的print()s 不会使用flutter run 显示在控制台中。我什至不知道是哪种情况。
这是我试图验证正在运行的代码,即onStart 函数:
void _entrypoint() => AudioServiceBackground.run(() => AudioPlayerTask());
class AudioPlayerTask extends BackgroundAudioTask {
onStart(Map<String, dynamic> params) async {
print('*** HELLO ***');
}
}
这是调用代码,来自 Flutter 应用的状态:
initAudio() async {
// Not sure if this is necessary, but according to some, it is.
await AudioService.connect();
// This should run the `onStart` function above.
await AudioService.start(backgroundTaskEntrypoint: _entrypoint);
print('*** THIS IS RUNNING ***');
}
@override
void initState() {
super.initState();
initAudio();
}
initAudio() 确实正在运行,正如其中的 print() 语句所证明的那样。
所以问题是:我可以从 Dart 隔离中print(),如果不能,我怎样才能使隔离以某种方式表明它正在运行?
所有这些只是为了尝试让 Flutter 包 audio_service 正常工作(特别是 0.16.2 版)。我一直被困在这一点上,只是想知道onStart 是否正在运行。据我所知,它没有运行,但我没有办法证明它。
(奖励问题:如果它没有正在运行,我想知道为什么不运行。但这使得问题audio_service-specific,这可能值得一个单独的问题。我已经在使用doing home: AudioServiceWidget(child:... 和 _entrypoint 是顶级的。)
【问题讨论】:
-
我非常确定来自隔离的标准输出将与主要隔离相同。你可以很容易地制作一个小示例程序来检查。
-
我非常确定 Isolates 除了端口之外没有其他接口,否则它们会弄乱 UI Isolate 对这些接口的访问。
-
尝试检查
flutter logs的打印件
标签: flutter dart dart-isolates