UI Phase 2 (L8): unify Profile section headers with AppSectionHeader

The Profile screen's card section titles used plain bold titleMedium text,
inconsistent with the cyber accent-bar section headers elsewhere. Convert
"Profile Photo", "Face Verification", "Account details", "Password" and
"Offices" to AppSectionHeader so they read the same as the rest of the app.

Verified: flutter analyze lib clean; flutter build web green; visual QA
(Profile) in dark.

Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
2026-09-26 16:28:01 +08:00
parent 7716460363
commit 6bde8630d8
+6 -14
View File
@@ -14,6 +14,7 @@ import '../../widgets/face_verification_overlay.dart';
import '../../widgets/multi_select_picker.dart';
import '../../widgets/qr_verification_dialog.dart';
import '../../widgets/app_page_header.dart';
import '../../widgets/app_section_header.dart';
import '../../widgets/responsive_body.dart';
import '../../utils/snackbar.dart';
@@ -102,10 +103,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Account details',
style: Theme.of(context).textTheme.titleMedium,
),
const AppSectionHeader('Account details', padding: EdgeInsets.zero),
const SizedBox(height: 12),
// Email (read-only)
TextFormField(
@@ -151,10 +149,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Password',
style: Theme.of(context).textTheme.titleMedium,
),
const AppSectionHeader('Password', padding: EdgeInsets.zero),
const SizedBox(height: 8),
const Text(
'Set or change your password. OAuth users (Google/Meta) can set a password here.',
@@ -224,10 +219,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Offices',
style: Theme.of(context).textTheme.titleMedium,
),
const AppSectionHeader('Offices', padding: EdgeInsets.zero),
const SizedBox(height: 12),
officesAsync.when(
data: (offices) {
@@ -286,7 +278,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Profile Photo', style: theme.textTheme.titleMedium),
const AppSectionHeader('Profile Photo', padding: EdgeInsets.zero),
const SizedBox(height: 16),
Center(
child: Stack(
@@ -359,7 +351,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Face Verification', style: theme.textTheme.titleMedium),
const AppSectionHeader('Face Verification', padding: EdgeInsets.zero),
const SizedBox(height: 8),
Text(
'Enroll your face for attendance verification. '