On some Android devices, mobile_scanner's native plugin is not registered, causing a MissingPluginException when the Send/Receive accounts screens try to open the QR camera.
Added _initScanner() to both AccountSendScreen and AccountReceiveScreen: it performs a pre-flight start+stop of a temporary MobileScannerController in a try/catch, catching any exception including MissingPluginException.
If the check fails, a _scannerFailed flag is set and the UI falls back to the existing copy-paste text-input flow; if it succeeds, a fresh controller is handed to the MobileScanner widget.
A loading spinner is shown during the brief initialisation check so the UI never shows a blank/stuck camera view.
Test plan
All 447 existing unit + widget tests pass
dart analyze reports no issues
On devices where the camera scanner works: brief spinner then camera opens normally
On devices where mobile_scanner is unavailable: spinner then text-paste fallback appears
Generated with Claude Code
## Summary
- On some Android devices, mobile_scanner's native plugin is not registered, causing a MissingPluginException when the Send/Receive accounts screens try to open the QR camera.
- Added _initScanner() to both AccountSendScreen and AccountReceiveScreen: it performs a pre-flight start+stop of a temporary MobileScannerController in a try/catch, catching any exception including MissingPluginException.
- If the check fails, a _scannerFailed flag is set and the UI falls back to the existing copy-paste text-input flow; if it succeeds, a fresh controller is handed to the MobileScanner widget.
- A loading spinner is shown during the brief initialisation check so the UI never shows a blank/stuck camera view.
## Test plan
- [ ] All 447 existing unit + widget tests pass
- [ ] dart analyze reports no issues
- [ ] On devices where the camera scanner works: brief spinner then camera opens normally
- [ ] On devices where mobile_scanner is unavailable: spinner then text-paste fallback appears
Generated with Claude Code
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Test plan
Generated with Claude Code