小编Hus*_*ell的帖子

在 Flutter 中报告错误的最佳实践

我正在尝试在我的 Flutter 项目中使用firebase_crashlytics lib,问题是 Flutter 从不崩溃,我可以在代码中抛出异常,但 dart 中的所有异常都被视为非致命异常。这些将正常报告给控制台,但我希望 Flutter、本机和未处理的异常被视为致命异常。

我想要以下之一:

  • 当我遇到意外异常时使应用程序崩溃(关闭应用程序并显示“无响应”)
  • 向 firebase 控制台报告致命异常
  • 解决办法?

我的 main.dart 代码:

Future main() async {
  runZoned<Future<void>>(() async {
    await DotEnv().load('.env');
    setupNotifications();
    FlutterError.onError = Crashlytics.instance.recordFlutterError;
    runApp(MyApp());
  }, onError: Crashlytics.instance.recordError);
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试做的事情:

  • SystemChannels.platform.invokeMethod('SystemNavigator.pop'); 它有效,但不是真正的用户友好
  • 调用试图通过 使应用程序崩溃的 kotlin 函数MethodChannel无效。

我可能会做的事情:

  • 调用 atoast通知用户出现问题
  • 显示一个弹出窗口,通知用户出现问题并关闭应用程序
  • 只需关闭应用程序
  • 尝试加载应用程序主屏幕的初始状态

firebase crashlytics flutter

7
推荐指数
1
解决办法
1235
查看次数

使用 annotate Exists 时提高 Django 查询集的性能

我有一个返回大量数据的查询集,它可以按年份过滤,将返回大约 10 万行,或显示所有将带来大约 100 万行。

此注释的目的是生成一个 xlsx 电子表格。

模型表示,RelatedModelModel和之间是多对多的AnotherModel

Model:
    id
    field1
    field2
    field3

RelatedModel:
    foreign_key_model (Model)
    foreign_key_another (AnotherModel)
Run Code Online (Sandbox Code Playgroud)

Queryset,如果关系存在,它会注释,这个注释很慢,可能需要几分钟。

Model.objects.all().annotate(
    related_exists=Exists(RelatedModel.objects.filter(foreign_key_model=OuterRef('id'))),
    related_column=Case(
        When(related_exists=True, then=Value('The relation exists!')),
        When(related_exists=False, then=Value('The relation doesn't exist!')),
        default=Value('This is the default value!'),
        output_field=CharField(),
    )
).values_list(
    'related_column',
    'field1',
    'field2',
    'field3'
)
Run Code Online (Sandbox Code Playgroud)

django django-queryset query-performance

6
推荐指数
2
解决办法
1419
查看次数