import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'lib/core/models/financial_table_entry.dart'; import 'lib/shared/widgets/financial_table.dart'; void main() { runApp(const MobileFriendlyTestApp()); } class MobileFriendlyTestApp extends StatelessWidget { const MobileFriendlyTestApp({super.key}); @override Widget build(BuildContext context) { return ScreenUtilInit( designSize: const Size(375, 812), // iPhone X design size minTextAdapt: true, splitScreenMode: true, builder: (context, child) { return MaterialApp( title: 'Mobile Friendly Test', theme: ThemeData( primarySwatch: Colors.green, useMaterial3: true, ), home: const MobileFriendlyTestPage(), ); }, ); } } class MobileFriendlyTestPage extends StatelessWidget { const MobileFriendlyTestPage({super.key}); @override Widget build(BuildContext context) { // Sample financial data final sampleData = [ FinancialTableEntry( monthYear: 'Jan-25', chitValue: 500000, bidAmount: 438250, subscriptionAmount: 25000, commissionInstallment: 250, totalPayableInstallment: 25250, dividendAmount: 61750, ), FinancialTableEntry( monthYear: 'Feb-25', chitValue: 500000, bidAmount: 440850, subscriptionAmount: 25000, commissionInstallment: 250, totalPayableInstallment: 25250, dividendAmount: 59150, ), FinancialTableEntry( monthYear: 'Mar-25', chitValue: 500000, bidAmount: 443450, subscriptionAmount: 25000, commissionInstallment: 250, totalPayableInstallment: 25250, dividendAmount: 56550, ), FinancialTableEntry( monthYear: 'Total', chitValue: 1500000, bidAmount: 1322550, subscriptionAmount: 75000, commissionInstallment: 750, totalPayableInstallment: 75750, dividendAmount: 177450, ), ]; return Scaffold( appBar: AppBar( title: const Text('Mobile Friendly Test'), backgroundColor: Colors.green.shade600, foregroundColor: Colors.white, ), body: SingleChildScrollView( padding: EdgeInsets.all(16.w), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Financial Table (Desktop)', style: TextStyle( fontSize: 18.sp, fontWeight: FontWeight.w600, ), ), SizedBox(height: 12.h), FinancialTable( entries: sampleData, onRefresh: () { ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('Refresh tapped!')), ); }, ), SizedBox(height: 32.h), Text( 'Financial Table (Mobile)', style: TextStyle( fontSize: 18.sp, fontWeight: FontWeight.w600, ), ), SizedBox(height: 12.h), CompactFinancialTable( entries: sampleData, onRefresh: () { ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('Refresh tapped!')), ); }, ), SizedBox(height: 32.h), Text( 'Mobile-Friendly Improvements:', style: TextStyle( fontSize: 18.sp, fontWeight: FontWeight.w600, ), ), SizedBox(height: 12.h), _buildFeatureCard( 'Larger Fonts', 'Increased font sizes for better readability on mobile', Icons.text_fields, Colors.blue, ), SizedBox(height: 8.h), _buildFeatureCard( 'Better Touch Targets', 'Larger buttons and improved spacing for easier tapping', Icons.touch_app, Colors.green, ), SizedBox(height: 8.h), _buildFeatureCard( 'Optimized Cards', 'Compact card design with better visual hierarchy', Icons.grid_view, Colors.orange, ), SizedBox(height: 8.h), _buildFeatureCard( 'Responsive Layout', 'Adaptive design that works on all screen sizes', Icons.phone_android, Colors.purple, ), SizedBox(height: 8.h), _buildFeatureCard( 'Enhanced Typography', 'Better font weights and spacing for mobile scanning', Icons.format_size, Colors.teal, ), SizedBox(height: 8.h), _buildFeatureCard( 'Improved Spacing', 'Consistent padding and margins for mobile comfort', Icons.space_bar, Colors.indigo, ), ], ), ), ); } Widget _buildFeatureCard(String title, String description, IconData icon, Color color) { return Card( elevation: 1, child: Padding( padding: EdgeInsets.all(16.w), child: Row( children: [ Container( padding: EdgeInsets.all(12.w), decoration: BoxDecoration( color: color.withOpacity(0.1), borderRadius: BorderRadius.circular(12.r), ), child: Icon(icon, color: color, size: 24.w), ), SizedBox(width: 16.w), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( title, style: TextStyle( fontSize: 16.sp, fontWeight: FontWeight.w600, ), ), SizedBox(height: 4.h), Text( description, style: TextStyle( fontSize: 14.sp, color: Colors.grey.shade600, ), ), ], ), ), ], ), ), ); } }