在Flutter web中未获得任何错误输出

dba5bblo  于 2023-02-25  发布在  Flutter
关注(0)|答案(4)|浏览(162)

我无法从Flutter Web应用获取任何错误输出。正在使用打印到主机

print('some text');

工作正常,但不会打印错误。例如,引发异常

throw new Exception('testexception');

不会在浏览器控制台和IntelliJ中产生任何输出。Chrome中的日志级别设置为[Info, Warnings, Errors]
我甚至尝试实现一个自定义错误处理程序

void main(){
    FlutterError.onError = (FlutterErrorDetails details) {
        print('main.onError: details: ${details.toString()}');
    };

    runApp(new MyApp());
}

但是运气不好。我必须在某个地方启用错误输出吗?我在文档中找不到任何关于这个的信息。
我尝试使用Dart Dev Server(从IntelliJ使用Run时启动)以及从终端调用webdev servewebdev serve --auto restart来运行应用程序。

lp0sw83n

lp0sw83n1#

Flutter Web目前没有调试方法。将生成一个main.dart.js,您可以使用Chrome控制台调试它。

***“调试”***Web App的一个很酷的技巧是在浏览器上显示一个弹出窗口:

import 'dart:js' as js;

@override
void initState() {
  super.initState();

  js.context.callMethod("alert", <String>["Your debug message"]);
}
uubf1zoe

uubf1zoe2#

你看过这个问题是不是已知的吗?Flutter-web只是开发者预览版。如果没有当前的问题,创建一个,并提供一个最小的“如何重现”。我相信Flutter-web团队会很感激的。

tzxcd3kk

tzxcd3kk3#

我尝试了两个IDE和它在Intellij中的正确工作,但没有在VSCode中。它显示白色黑屏给予它尝试再次运行flutter run -d chrome,并在黑屏中等待2分钟。
并检查SDK中的flutter路径的可视化代码是否正确。

5w9g7ksd

5w9g7ksd4#

在JavaScript中,console.log方法用于输出到Web浏览器的JavaScript控制台。
因此,您可以从Dart获取JavaScript * console * 对象并在其上调用该方法。

import 'dart:js' as javascript; // ignore: avoid_web_libraries_in_flutter
/// Invoke the the JavaScript `console.log` method.

void logToBrowser(String message) {
  final console = javascript.context['console'] as javascript.JsObject;

  console.callMethod('log', [message]);
}

由于dart:js仅支持编译为JavaScript的Dart,这意味着使用它的Flutter应用将只能作为Flutter Web应用使用。导入它将意味着代码将无法用于面向iOS、Android等的应用。
提示:JavaScript * console * 对象还有其他可调用的方法。请使用infowarnerror,而不要使用log。最后两个方法出现在控制台中时会突出显示相应的条目。

相关问题