feat: Add a Documents menu item, refactor DocumentsPage to use BlocProvider and UiAppBar, and capitalize the 'KROWER I' profile level badge text.

This commit is contained in:
Achintha Isuru
2026-02-26 15:24:27 -05:00
parent 3d1963f2ec
commit df71deb698
3 changed files with 73 additions and 77 deletions

View File

@@ -19,7 +19,7 @@ class ProfileLevelBadge extends StatelessWidget {
switch (status) { switch (status) {
case StaffStatus.active: case StaffStatus.active:
case StaffStatus.verified: case StaffStatus.verified:
return 'Krower I'; return 'KROWER I';
case StaffStatus.pending: case StaffStatus.pending:
case StaffStatus.completedProfile: case StaffStatus.completedProfile:
return 'Pending'; return 'Pending';

View File

@@ -56,6 +56,11 @@ class OnboardingSection extends StatelessWidget {
label: i18n.menu_items.attire, label: i18n.menu_items.attire,
onTap: () => Modular.to.toAttire(), onTap: () => Modular.to.toAttire(),
), ),
ProfileMenuItem(
icon: UiIcons.file,
label: i18n.menu_items.documents,
onTap: () => Modular.to.toDocuments(),
),
], ],
), ),
], ],

View File

@@ -1,10 +1,10 @@
import 'package:core_localization/core_localization.dart';
import 'package:design_system/design_system.dart'; import 'package:design_system/design_system.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_modular/flutter_modular.dart'; import 'package:flutter_modular/flutter_modular.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
// ignore: depend_on_referenced_packages
import 'package:core_localization/core_localization.dart';
import '../blocs/documents/documents_cubit.dart'; import '../blocs/documents/documents_cubit.dart';
import '../blocs/documents/documents_state.dart'; import '../blocs/documents/documents_state.dart';
@@ -14,35 +14,18 @@ import '../widgets/documents_progress_card.dart';
class DocumentsPage extends StatelessWidget { class DocumentsPage extends StatelessWidget {
const DocumentsPage({super.key}); const DocumentsPage({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final DocumentsCubit cubit = Modular.get<DocumentsCubit>();
if (cubit.state.status == DocumentsStatus.initial) {
cubit.loadDocuments();
}
return Scaffold( return Scaffold(
appBar: AppBar( appBar: UiAppBar(
elevation: 0, title: t.staff_documents.title,
leading: IconButton( showBackButton: true,
icon: const Icon(UiIcons.arrowLeft, color: UiColors.iconSecondary), onLeadingPressed: () => Modular.to.toProfile(),
onPressed: () => Modular.to.pop(),
), ),
title: Text( body: BlocProvider<DocumentsCubit>(
t.staff_documents.title, create: (BuildContext context) =>
style: UiTypography.headline3m.copyWith( Modular.get<DocumentsCubit>()..loadDocuments(),
color: UiColors.textPrimary, child: BlocBuilder<DocumentsCubit, DocumentsState>(
),
),
bottom: PreferredSize(
preferredSize: const Size.fromHeight(1.0),
child: Container(color: UiColors.border, height: 1.0),
),
),
body: BlocBuilder<DocumentsCubit, DocumentsState>(
bloc: cubit,
builder: (BuildContext context, DocumentsState state) { builder: (BuildContext context, DocumentsState state) {
if (state.status == DocumentsStatus.loading) { if (state.status == DocumentsStatus.loading) {
return const Center( return const Center(
@@ -59,10 +42,14 @@ class DocumentsPage extends StatelessWidget {
state.errorMessage != null state.errorMessage != null
? (state.errorMessage!.contains('errors.') ? (state.errorMessage!.contains('errors.')
? translateErrorKey(state.errorMessage!) ? translateErrorKey(state.errorMessage!)
: t.staff_documents.list.error(message: state.errorMessage!)) : t.staff_documents.list.error(
message: state.errorMessage!,
))
: t.staff_documents.list.error(message: 'Unknown'), : t.staff_documents.list.error(message: 'Unknown'),
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: UiTypography.body1m.copyWith(color: UiColors.textSecondary), style: UiTypography.body1m.copyWith(
color: UiColors.textSecondary,
),
), ),
), ),
); );
@@ -71,7 +58,9 @@ class DocumentsPage extends StatelessWidget {
return Center( return Center(
child: Text( child: Text(
t.staff_documents.list.empty, t.staff_documents.list.empty,
style: UiTypography.body1m.copyWith(color: UiColors.textSecondary), style: UiTypography.body1m.copyWith(
color: UiColors.textSecondary,
),
), ),
); );
} }
@@ -91,13 +80,15 @@ class DocumentsPage extends StatelessWidget {
...state.documents.map( ...state.documents.map(
(StaffDocument doc) => DocumentCard( (StaffDocument doc) => DocumentCard(
document: doc, document: doc,
onTap: () => Modular.to.pushNamed('./details', arguments: doc.id), onTap: () =>
Modular.to.pushNamed('./details', arguments: doc.id),
), ),
), ),
], ],
); );
}, },
), ),
),
); );
} }
} }