Add explicit types and improve type safety across codebase

This commit adds explicit type annotations to variables, function parameters, and return types throughout the codebase, particularly in widget trees, Bloc logic, and repository implementations. The changes improve code readability, maintainability, and type safety, and align with Dart best practices. No business logic was changed.
This commit is contained in:
Achintha Isuru
2026-01-24 10:00:36 -05:00
parent ff93bfa4bd
commit f57f41c508
99 changed files with 495 additions and 485 deletions

View File

@@ -25,7 +25,7 @@ class ClientSettingsModule extends Module {
}
@override
void routes(r) {
void routes(RouteManager r) {
r.child('/', child: (_) => const ClientSettingsPage());
}
}

View File

@@ -4,7 +4,7 @@ abstract class ClientSettingsEvent extends Equatable {
const ClientSettingsEvent();
@override
List<Object?> get props => [];
List<Object?> get props => <Object?>[];
}
class ClientSettingsSignOutRequested extends ClientSettingsEvent {

View File

@@ -4,7 +4,7 @@ abstract class ClientSettingsState extends Equatable {
const ClientSettingsState();
@override
List<Object?> get props => [];
List<Object?> get props => <Object?>[];
}
class ClientSettingsInitial extends ClientSettingsState {
@@ -25,5 +25,5 @@ class ClientSettingsError extends ClientSettingsState {
const ClientSettingsError(this.message);
@override
List<Object?> get props => [message];
List<Object?> get props => <Object?>[message];
}

View File

@@ -12,13 +12,13 @@ class SettingsProfileHeader extends StatelessWidget {
@override
/// Builds the profile header UI.
Widget build(BuildContext context) {
final labels = t.client_settings.profile;
final session = dc.ClientSessionStore.instance.session;
final businessName =
final TranslationsClientSettingsProfileEn labels = t.client_settings.profile;
final dc.ClientSession? session = dc.ClientSessionStore.instance.session;
final String businessName =
session?.business?.businessName ?? 'Your Company';
final email = session?.user.email ?? 'client@example.com';
final photoUrl = session?.userPhotoUrl;
final avatarLetter = businessName.trim().isNotEmpty
final String email = session?.user.email ?? 'client@example.com';
final String? photoUrl = session?.userPhotoUrl;
final String avatarLetter = businessName.trim().isNotEmpty
? businessName.trim()[0].toUpperCase()
: 'C';
@@ -40,7 +40,7 @@ class SettingsProfileHeader extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
spacing: UiConstants.space4,
children: [
children: <Widget>[
Container(
width: 64,
height: 64,
@@ -69,13 +69,13 @@ class SettingsProfileHeader extends StatelessWidget {
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
children: <Widget>[
Text(businessName, style: UiTypography.body1b.textPrimary),
const SizedBox(height: UiConstants.space1),
Row(
mainAxisAlignment: MainAxisAlignment.start,
spacing: UiConstants.space1,
children: [
children: <Widget>[
Icon(
UiIcons.mail,
size: 14,

View File

@@ -12,7 +12,7 @@ class SettingsQuickLinks extends StatelessWidget {
@override
/// Builds the quick links UI.
Widget build(BuildContext context) {
final labels = t.client_settings.profile;
final TranslationsClientSettingsProfileEn labels = t.client_settings.profile;
return SliverPadding(
padding: const EdgeInsets.all(UiConstants.space5),
@@ -28,7 +28,7 @@ class SettingsQuickLinks extends StatelessWidget {
padding: const EdgeInsets.all(UiConstants.space4),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
children: <Widget>[
Text(
labels.quick_links,
style: UiTypography.footnote1b.textPrimary,
@@ -85,9 +85,9 @@ class _QuickLinkItem extends StatelessWidget {
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
children: <Widget>[
Row(
children: [
children: <Widget>[
Icon(icon, size: 20, color: UiColors.iconSecondary),
const SizedBox(width: UiConstants.space3),
Text(title, style: UiTypography.footnote1m.textPrimary),