Files
sharedinbox/pubspec.yaml
T
Thomas SharedInboxandClaude Sonnet 4.6 bc91c0db52 fix: about page version unknown and link crash on Android (#213)
Bug 1 – "App Version: unknown": PackageInfo.fromPlatform() throws because
plugin registration is aborted mid-way by a Java Error (e.g.
NoClassDefFoundError) that catch (Exception e) does not catch.
Fix: change all 13 catch clauses in GeneratedPluginRegistrant.java to
catch (Throwable e) and commit the file so it is used by release builds.

Bug 2 – crash when tapping sharedinbox.de: url_launcher_android 6.3.25+
migrated to Pigeon 26, which throws a channel-error on some Android
devices (same root cause as path_provider_android, already pinned).
The onTapLink callback called launchUrl via unawaited() with no error
handling, so the PlatformException became an unhandled async error and
crashed the app.
Fix: pin url_launcher_android <6.3.25 in dependency_overrides, and add
a _launchUrl() helper with full try/catch that shows a SnackBar on error
instead of crashing. New widget test verifies the snackbar path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 17:15:19 +02:00

96 lines
2.5 KiB
YAML

name: sharedinbox
description: IMAP email client for Android, iOS, and Desktop.
publish_to: none
version: 0.1.1
environment:
sdk: '>=3.3.0 <4.0.0'
flutter: '>=3.22.0'
dependencies:
flutter:
sdk: flutter
# Not used directly, but required to silence Flutter's "missing CupertinoIcons font" build warning.
cupertino_icons: ^1.0.8
enough_mail: ^2.1.7
http: ^1.2.0
# Local persistence (offline-first)
drift: ^2.20.3
sqlite3_flutter_libs: ^0.6.0+eol
path_provider: ^2.1.5
path: ^1.9.1
# State management
flutter_riverpod: ^3.0.0
# Navigation
go_router: ^17.2.3
# Secure credential storage (passwords)
flutter_secure_storage: ^10.0.0
# Date formatting
intl: any
# File picking (compose attachments) and opening downloaded attachments
file_picker: ^12.0.0-beta.4
open_filex: ^4.6.0
mime: ^2.0.0
# QR code generation for account sharing
qr_flutter: ^4.1.0
# Public-key encryption for secure account sharing (ECIES: X25519 + AES-256-GCM)
cryptography: ^2.7.0
# QR code scanning (camera) for secure account import
mobile_scanner: ^7.2.0
# HTML rendering for email bodies
webview_flutter: ^4.0.0
url_launcher: ^6.3.2
flutter_markdown_plus: ^1.0.7
# Background sync and local notifications
flutter_local_notifications: ^21.0.0
workmanager: ^0.9.0
# App version metadata for crash reports
package_info_plus: ^10.1.0
share_plus: ^13.1.0
dev_dependencies:
flutter_test:
sdk: flutter
integration_test:
sdk: flutter
flutter_lints: ^6.0.0
drift_dev: ^2.20.3
build_runner: ^2.4.13
test: ^1.25.0
mockito: ^5.4.4
fake_async: ^1.3.1
path_provider_platform_interface: ^2.1.2
sqlite3: ^3.1.5 # used directly in test/unit/db_test_helper.dart; 3.x required for Database.close()
url_launcher_platform_interface: ^2.3.2
plugin_platform_interface: ^2.1.8
flutter:
uses-material-design: true
assets:
- assets/
dependency_overrides:
# path_provider_android 2.2.21 updated to Pigeon 26, which causes a
# channel-error on startup on some Android devices. 2.3+ uses package:jni
# (SIGSEGV in libdartjni.so FindClassUnchecked). Pin to 2.2.20 which uses
# stable Pigeon and is known to work reliably.
path_provider_android: ">=2.2.0 <2.2.21"
# url_launcher_android 6.3.25 updated to Pigeon 26, which causes a
# channel-error on launchUrl on some Android devices (same root cause as
# path_provider_android). Pin to <6.3.25 which uses stable Pigeon.
url_launcher_android: ">=6.3.0 <6.3.25"