chitfund/luckychit/lib/test_financial_table.dart

294 lines
8.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'core/models/financial_table_entry.dart';
import 'shared/widgets/financial_table.dart';
void main() {
runApp(const FinancialTableTestApp());
}
class FinancialTableTestApp extends StatelessWidget {
const FinancialTableTestApp({super.key});
@override
Widget build(BuildContext context) {
return ScreenUtilInit(
designSize: const Size(375, 812),
minTextAdapt: true,
splitScreenMode: true,
builder: (context, child) {
return MaterialApp(
title: 'Financial Table Test',
theme: ThemeData(
primarySwatch: Colors.green,
useMaterial3: true,
),
home: const FinancialTableTestPage(),
);
},
);
}
}
class FinancialTableTestPage extends StatelessWidget {
const FinancialTableTestPage({super.key});
@override
Widget build(BuildContext context) {
// Sample data based on the image provided
final sampleData = [
FinancialTableEntry(
monthYear: 'Mar-25',
chitValue: 200000,
bidAmount: 175300,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: 24700,
),
FinancialTableEntry(
monthYear: 'Apr-25',
chitValue: 200000,
bidAmount: 177900,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: 22100,
),
FinancialTableEntry(
monthYear: 'May-25',
chitValue: 200000,
bidAmount: 180500,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: 19500,
),
FinancialTableEntry(
monthYear: 'Jun-25',
chitValue: 200000,
bidAmount: 183100,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: 16900,
),
FinancialTableEntry(
monthYear: 'Jul-25',
chitValue: 200000,
bidAmount: 185700,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: 14300,
),
FinancialTableEntry(
monthYear: 'Aug-25',
chitValue: 200000,
bidAmount: 188300,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: 11700,
),
FinancialTableEntry(
monthYear: 'Sep-25',
chitValue: 200000,
bidAmount: 190900,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: 9100,
),
FinancialTableEntry(
monthYear: 'Oct-25',
chitValue: 200000,
bidAmount: 193500,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: 6500,
),
FinancialTableEntry(
monthYear: 'Nov-25',
chitValue: 200000,
bidAmount: 196100,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: 3900,
),
FinancialTableEntry(
monthYear: 'Dec-25',
chitValue: 200000,
bidAmount: 198700,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: 1300,
),
FinancialTableEntry(
monthYear: 'Jan-26',
chitValue: 200000,
bidAmount: 201300,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: -1300,
),
FinancialTableEntry(
monthYear: 'Feb-26',
chitValue: 200000,
bidAmount: 203900,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: -3900,
),
FinancialTableEntry(
monthYear: 'Mar-26',
chitValue: 200000,
bidAmount: 206500,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: -6500,
),
FinancialTableEntry(
monthYear: 'Apr-26',
chitValue: 200000,
bidAmount: 209100,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: -9100,
),
FinancialTableEntry(
monthYear: 'May-26',
chitValue: 200000,
bidAmount: 211700,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: -11700,
),
FinancialTableEntry(
monthYear: 'Jun-26',
chitValue: 200000,
bidAmount: 214300,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: -14300,
),
FinancialTableEntry(
monthYear: 'Jul-26',
chitValue: 200000,
bidAmount: 216900,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: -16900,
),
FinancialTableEntry(
monthYear: 'Aug-26',
chitValue: 200000,
bidAmount: 219500,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: -19500,
),
FinancialTableEntry(
monthYear: 'Sep-26',
chitValue: 200000,
bidAmount: 222100,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: -22100,
),
FinancialTableEntry(
monthYear: 'Oct-26',
chitValue: 200000,
bidAmount: 224700,
subscriptionAmount: 10000,
commissionInstallment: 250,
totalPayableInstallment: 10250,
dividendAmount: -24700,
),
// Total row
FinancialTableEntry(
monthYear: 'Total',
chitValue: 4000000,
bidAmount: 4000000,
subscriptionAmount: 200000,
commissionInstallment: 5000,
totalPayableInstallment: 205000,
dividendAmount: 0,
),
];
return Scaffold(
appBar: AppBar(
title: const Text('Financial Table Test'),
backgroundColor: Colors.green.shade600,
foregroundColor: Colors.white,
),
body: SingleChildScrollView(
padding: EdgeInsets.all(16.w),
child: Column(
children: [
Text(
'Chitfund Summary Table',
style: TextStyle(
fontSize: 24.sp,
fontWeight: FontWeight.bold,
color: Colors.green.shade700,
),
),
SizedBox(height: 16.h),
Text(
'Based on the provided image, this table shows the monthly financial breakdown for a chit fund group.',
style: TextStyle(
fontSize: 14.sp,
color: Colors.grey.shade600,
),
textAlign: TextAlign.center,
),
SizedBox(height: 24.h),
// Full table
FinancialTable(
entries: sampleData,
onRefresh: () {
// Refresh functionality
print('Refreshing financial data...');
},
),
SizedBox(height: 32.h),
// Compact table for comparison
Text(
'Compact Version (for mobile)',
style: TextStyle(
fontSize: 18.sp,
fontWeight: FontWeight.w600,
color: Colors.green.shade700,
),
),
SizedBox(height: 16.h),
CompactFinancialTable(
entries: sampleData,
onRefresh: () {
print('Refreshing compact financial data...');
},
),
],
),
),
);
}
}