Flutter:从 Dart 隔离打印到控制台?
Flutter: Print to console from Dart isolates?
无法在线查找有关此内容的信息。我只是想弄清楚 Dart isolate 中的特定函数是否实际上是 运行。我知道如何做到这一点的唯一方法是使用 print()
函数,但要么我的函数不是 运行,要么来自 isolate 的 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 isolate 中 print()
吗?如果不能,我怎样才能使 isolate 以某种方式表明它是 运行?
所有这些只是为了尝试让 Flutter 包 audio_service
正常工作(特别是版本 0.16.2)。我一直被困在这一点上,只是弄清楚 onStart
是否是 运行。据我所知,它不是运行,但我没有办法证明它。
(额外问题:如果 不是 运行,我想知道为什么不。但这使得问题 audio_service
变得特定,这可能需要一个单独的问题。我已经在使用 home: AudioServiceWidget(child:...
并且 _entrypoint
是顶级的。)
我已经得到一个 isolate 来工作,答案是 是的,打印的字符串应该在 isolate 中可见,至少在调试模式下。
是的,隔离打印在日志上可见。在某些情况下,例如使用 Logger 包时,您可以只将消息从 isolate 发送到主线程并在那里调用记录器。
查看 easy_isolate 插件,它提供了一种使用 isolates 和详尽解释文档的简单方法
无法在线查找有关此内容的信息。我只是想弄清楚 Dart isolate 中的特定函数是否实际上是 运行。我知道如何做到这一点的唯一方法是使用 print()
函数,但要么我的函数不是 运行,要么来自 isolate 的 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 isolate 中 print()
吗?如果不能,我怎样才能使 isolate 以某种方式表明它是 运行?
所有这些只是为了尝试让 Flutter 包 audio_service
正常工作(特别是版本 0.16.2)。我一直被困在这一点上,只是弄清楚 onStart
是否是 运行。据我所知,它不是运行,但我没有办法证明它。
(额外问题:如果 不是 运行,我想知道为什么不。但这使得问题 audio_service
变得特定,这可能需要一个单独的问题。我已经在使用 home: AudioServiceWidget(child:...
并且 _entrypoint
是顶级的。)
我已经得到一个 isolate 来工作,答案是 是的,打印的字符串应该在 isolate 中可见,至少在调试模式下。
是的,隔离打印在日志上可见。在某些情况下,例如使用 Logger 包时,您可以只将消息从 isolate 发送到主线程并在那里调用记录器。
查看 easy_isolate 插件,它提供了一种使用 isolates 和详尽解释文档的简单方法