import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:mobile_scanner/mobile_scanner.dart'; class ScannerErrorWidget extends StatelessWidget { const ScannerErrorWidget({required this.error, super.key}); final MobileScannerException error; @override Widget build(BuildContext context) { String errorMessage; switch (error.errorCode) { case MobileScannerErrorCode.controllerUninitialized: errorMessage = 'Controller not ready.'; break; case MobileScannerErrorCode.permissionDenied: errorMessage = 'Permission denied'; break; case MobileScannerErrorCode.unsupported: errorMessage = 'Scanning is unsupported on this device'; break; default: errorMessage = 'Generic Error'; break; } return ColoredBox( color: Colors.black, child: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ const Padding( padding: EdgeInsets.only(bottom: 16), child: Icon(Icons.error, color: Colors.white), ), Text( errorMessage, style: const TextStyle(color: Colors.white), ), Text( error.errorDetails?.message ?? '', style: const TextStyle(color: Colors.white), ), ], ), ), ); } @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); properties.add(DiagnosticsProperty('error', error)); } }