import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; class DataScreen extends StatelessWidget { final List scannedHistory; const DataScreen({ super.key, required this.scannedHistory, }); void _copyToClipboard(BuildContext context, String text) { Clipboard.setData(ClipboardData(text: text)); ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('Copied to clipboard'), duration: Duration(seconds: 2), ), ); } void _shareAllData(BuildContext context) { final allData = scannedHistory.join('\n'); Clipboard.setData(ClipboardData(text: allData)); ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('All data copied to clipboard'), duration: Duration(seconds: 2), ), ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Scanned Data'), backgroundColor: Theme.of(context).colorScheme.inversePrimary, actions: [ IconButton( icon: const Icon(Icons.share), onPressed: scannedHistory.isEmpty ? null : () => _shareAllData(context), tooltip: 'Copy all data', ), ], ), body: scannedHistory.isEmpty ? const Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( Icons.inbox, size: 80, color: Colors.grey, ), SizedBox(height: 20), Text( 'No scanned data yet', style: TextStyle( fontSize: 18, color: Colors.grey, ), ), SizedBox(height: 10), Text( 'Start scanning barcodes from the home screen', style: TextStyle( fontSize: 14, color: Colors.grey, ), ), ], ), ) : Column( children: [ Container( padding: const EdgeInsets.all(16), color: Colors.blue[50], child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( 'Total Items: ${scannedHistory.length}', style: const TextStyle( fontSize: 16, fontWeight: FontWeight.bold, ), ), ElevatedButton.icon( onPressed: () => _shareAllData(context), icon: const Icon(Icons.copy, size: 18), label: const Text('Copy All'), style: ElevatedButton.styleFrom( padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 8, ), ), ), ], ), ), Expanded( child: ListView.builder( padding: const EdgeInsets.all(16), itemCount: scannedHistory.length, itemBuilder: (context, index) { final item = scannedHistory[index]; return Card( elevation: 2, margin: const EdgeInsets.only(bottom: 12), child: ListTile( leading: Container( width: 40, height: 40, decoration: BoxDecoration( color: Theme.of(context).colorScheme.primary, borderRadius: BorderRadius.circular(20), ), child: Center( child: Text( '${index + 1}', style: const TextStyle( color: Colors.white, fontWeight: FontWeight.bold, ), ), ), ), title: Text( item, style: const TextStyle( fontSize: 16, fontWeight: FontWeight.w500, ), ), subtitle: Text( 'Scanned item #${index + 1}', style: TextStyle( color: Colors.grey[600], ), ), trailing: Row( mainAxisSize: MainAxisSize.min, children: [ IconButton( icon: const Icon(Icons.copy, size: 20), onPressed: () => _copyToClipboard(context, item), tooltip: 'Copy', ), Container( padding: const EdgeInsets.symmetric( horizontal: 8, vertical: 4, ), decoration: BoxDecoration( color: Colors.green[100], borderRadius: BorderRadius.circular(12), ), child: Text( 'Active', style: TextStyle( color: Colors.green[800], fontSize: 12, fontWeight: FontWeight.bold, ), ), ), ], ), ), ); }, ), ), ], ), floatingActionButton: FloatingActionButton.extended( onPressed: () => Navigator.pop(context), icon: const Icon(Icons.qr_code_scanner), label: const Text('Scan More'), backgroundColor: Theme.of(context).colorScheme.primary, ), ); } }