Files
Tracker/lib/screens/learn/wife_learn_screen.dart

161 lines
5.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import '../../theme/app_theme.dart';
import '../husband/learn_article_screen.dart';
class WifeLearnScreen extends StatelessWidget {
const WifeLearnScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Reproductive Health'),
actions: [
IconButton(
icon: const Icon(Icons.bookmark),
onPressed: () {},
),
],
),
body: SingleChildScrollView(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildSection(context, 'Understanding My Cycle', [
_LearnItem(
icon: Icons.loop,
title: 'The 4 Phases',
subtitle: 'What\'s happening in my body',
articleId: 'wife_cycle_phases',
),
_LearnItem(
icon: Icons.psychology_outlined,
title: 'Mood & Hormones',
subtitle: 'Why I feel different each week',
articleId: 'wife_mood_changes', // Reusing similar concept, maybe new article
),
]),
const SizedBox(height: 24),
_buildSection(context, 'Disease Prevention', [
_LearnItem(
icon: Icons.health_and_safety_outlined,
title: 'Preventing Infections',
subtitle: 'Hygiene and STI prevention',
articleId: 'wife_disease_prevention',
),
_LearnItem(
icon: Icons.medical_services_outlined,
title: 'Regular Screenings',
subtitle: 'What to check and when',
articleId: 'wife_screenings',
),
]),
const SizedBox(height: 24),
_buildSection(context, 'Partnership', [
_LearnItem(
icon: Icons.favorite_border,
title: 'Communication',
subtitle: 'Talking to him about my health',
articleId: 'wife_partnership_tips',
),
_LearnItem(
icon: Icons.handshake_outlined,
title: 'Shared Responsibility',
subtitle: 'Navigating fertility together',
articleId: 'wife_shared_responsibility',
),
]),
],
),
),
);
}
Widget _buildSection(BuildContext context, String title, List<_LearnItem> items) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: GoogleFonts.outfit(
fontSize: 14,
fontWeight: FontWeight.w500,
color: AppColors.warmGray,
letterSpacing: 0.5,
),
),
const SizedBox(height: 8),
Container(
decoration: BoxDecoration(
color: Theme.of(context).cardTheme.color,
borderRadius: BorderRadius.circular(12),
border: Border.all(
color: Theme.of(context).colorScheme.outline.withOpacity(0.05)),
),
child: Column(
children: items
.map((item) => ListTile(
leading: Container(
width: 40,
height: 40,
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.primaryContainer.withOpacity(0.2),
borderRadius: BorderRadius.circular(10),
),
child: Icon(
item.icon,
color: Theme.of(context).colorScheme.primary,
size: 20,
),
),
title: Text(
item.title,
style: GoogleFonts.outfit(
fontSize: 15,
fontWeight: FontWeight.w500,
color: Theme.of(context).colorScheme.onSurface,
),
),
subtitle: Text(
item.subtitle,
style: GoogleFonts.outfit(
fontSize: 13,
color: AppColors.warmGray,
),
),
trailing: const Icon(
Icons.chevron_right,
color: AppColors.lightGray,
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => LearnArticleScreen(articleId: item.articleId),
),
);
},
))
.toList(),
),
),
],
);
}
}
class _LearnItem {
final IconData icon;
final String title;
final String subtitle;
final String articleId;
const _LearnItem({
required this.icon,
required this.title,
required this.subtitle,
required this.articleId,
});
}