thunder
thunder copied to clipboard
Error and crash reporting
Pull Request Description
This PR introduces error handling capabilities to the application, enabling the detection and reporting of errors. Leveraging the catcher_2 package, crashes are logged silently to a logs.txt file. Additionally, users can conveniently access and copy log data via the "Settings > Debug" section of the application.
sample logs
============================== CATCHER 2 LOG ==============================
Crash occurred on 2024-05-15 19:02:41.338115
------- DEVICE INFO -------
id:
board:
bootloader:
brand:
device:
display:
fingerprint:
hardware: qcom
host:
isPhysicalDevice: true
manufacturer:
model:
product: spes_global
tags: release-keys
type: user
versionBaseOs:
versionCodename: REL
versionIncremental: 1692578867
versionPreviewSdk: 0
versionRelease: 13
versionSdk: 33
versionSecurityPatch: 2023-08-05
------- APP INFO -------
environment: debug
version: 0.4.0-2
appName: Thunder
buildNumber: 53
packageName: com.hjiangsu.thunder.dev
---------- ERROR ----------
HttpException: Invalid statusCode: 400, uri = https://feddit.de/pictrs/image/A3hLXXRbsY.png?
------- STACK TRACE -------
---------- ERROR ----------
Exception: Invalid image data
------- STACK TRACE -------
#0 _futurize (dart:ui/painting.dart:6966:5)
#1 ImageDescriptor.encoded (dart:ui/painting.dart:6775:12)
#2 instantiateImageCodecWithSize (dart:ui/painting.dart:2287:60)
#3 PaintingBinding.instantiateImageCodecWithSize (package:flutter/src/painting/binding.dart:141:15)
#4 ImageLoader.loadImageAsync.<anonymous closure> (package:cached_network_image/src/image_provider/_image_loader.dart:65:22)
<asynchronous suspension>
#5 ImageLoader._load (package:cached_network_image/src/image_provider/_image_loader.dart:124:27)
<asynchronous suspension>
#6 new MultiImageStreamCompleter.<anonymous closure> (package:cached_network_image/src/image_provider/multi_image_stream_completer.dart:26:7)
<asynchronous suspension>
Issue Being Fixed
Issue Number: #340
Screenshots / Recordings
Checklist
- [x] Did you update CHANGELOG.md?
- [x] Did you use localized strings where applicable?
- [ ] Did you add
semanticLabels where applicable for accessibility?