Refactor widgets & imports; add krow_domain

Add local krow_domain dependency to client, staff apps and client home package. Numerous UI/widget cleanups across features: add const where applicable, use explicit List<Widget> types and List<Widget>.generate, add super.key to constructors, tighten BlocProvider generics, replace some Containers with SizedBox, and simplify InputDecoration/Border constructors. Fix API error handler to return a const UnknownException. Update internal imports to package-style paths (staff_home, staff_payments, staff_main repository interface) and normalize Flutter imports (use material.dart). Add missing braces for early returns in tax form pages. Mostly formatting and small API/typing refactors with no behavioral changes intended.
This commit is contained in:
Achintha Isuru
2026-03-18 10:27:31 -04:00
parent e471fd12f2
commit 9ee8467632
34 changed files with 128 additions and 151 deletions

View File

@@ -24,7 +24,7 @@ class _PerformanceReportPageState extends State<PerformanceReportPage> {
@override
Widget build(BuildContext context) {
return BlocProvider(
return BlocProvider<PerformanceBloc>(
create: (BuildContext context) => Modular.get<PerformanceBloc>()
..add(LoadPerformanceReport(startDate: _startDate, endDate: _endDate)),
child: Scaffold(

View File

@@ -15,7 +15,7 @@ class ReportDetailSkeleton extends StatelessWidget {
return UiShimmer(
child: SingleChildScrollView(
child: Column(
children: [
children: <Widget>[
// Header area (matches the blue header with back button + title)
Container(
padding: const EdgeInsets.only(
@@ -26,12 +26,12 @@ class ReportDetailSkeleton extends StatelessWidget {
),
color: UiColors.primary,
child: Row(
children: [
children: <Widget>[
const UiShimmerCircle(size: UiConstants.space10),
const SizedBox(width: UiConstants.space3),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
children: <Widget>[
UiShimmerBox(
width: 140,
height: 18,
@@ -57,10 +57,10 @@ class ReportDetailSkeleton extends StatelessWidget {
const EdgeInsets.symmetric(horizontal: UiConstants.space5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
children: <Widget>[
// Summary stat cards row
const Row(
children: [
children: <Widget>[
Expanded(child: UiShimmerStatsCard()),
SizedBox(width: UiConstants.space3),
Expanded(child: UiShimmerStatsCard()),
@@ -78,14 +78,14 @@ class ReportDetailSkeleton extends StatelessWidget {
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
children: <Widget>[
const UiShimmerLine(width: 140, height: 14),
const SizedBox(height: UiConstants.space8),
Expanded(
child: Row(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: List.generate(7, (int index) {
children: List<Widget>.generate(7, (int index) {
// Varying bar heights for visual interest
final double height =
40.0 + (index * 17 % 120);
@@ -113,20 +113,20 @@ class ReportDetailSkeleton extends StatelessWidget {
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
children: <Widget>[
const UiShimmerLine(width: 160, height: 14),
const SizedBox(height: UiConstants.space6),
...List.generate(3, (int index) {
...List<Widget>.generate(3, (int index) {
return Padding(
padding: const EdgeInsets.only(
bottom: UiConstants.space5,
),
child: Column(
children: [
children: <Widget>[
const Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
children: <Widget>[
UiShimmerLine(width: 100, height: 12),
UiShimmerLine(width: 60, height: 12),
],

View File

@@ -17,10 +17,10 @@ class MetricCardSkeleton extends StatelessWidget {
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
children: <Widget>[
// Icon + label row
Row(
children: [
const Row(
children: <Widget>[
const UiShimmerCircle(size: UiConstants.space6),
const SizedBox(width: UiConstants.space2),
const Expanded(

View File

@@ -22,7 +22,7 @@ class MetricsGridSkeleton extends StatelessWidget {
mainAxisSpacing: UiConstants.space3,
crossAxisSpacing: UiConstants.space3,
childAspectRatio: 1.32,
children: List.generate(6, (int index) {
children: List<Widget>.generate(6, (int index) {
return const MetricCardSkeleton();
}),
),