import 'package:flutter/material.dart';
import '../../core/localization/app_localizations.dart';
import '../../models/learning_course.dart';
import '../../repositories/learning_repository.dart';
import '../../services/analytics_service.dart';
import 'learning_course_page.dart';
class NewInWeimarPage extends StatefulWidget {
const NewInWeimarPage({super.key});
@override
State<NewInWeimarPage> createState() => _NewInWeimarPageState();
}
class _NewInWeimarPageState extends State<NewInWeimarPage> {
final _repo = LearningRepository();
@override
void initState() {
super.initState();
AnalyticsService.instance.screenView('new_in_weimar');
}
late Future<List<LearningCourse>> _future;
@override
void didChangeDependencies() {
super.didChangeDependencies();
_future = _repo.fetchCourses(
languageCode: Localizations.localeOf(context).languageCode,
newInWeimar: true);
}
@override
void dispose() {
_repo.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final l10n = AppLocalizations.of(context);
return Scaffold(
appBar: AppBar(title: Text(l10n.t('newInWeimar'))),
body: FutureBuilder<List<LearningCourse>>(
future: _future,
builder: (context, s) {
if (!s.hasData) {
if (s.hasError) {
return Center(child: Text(l10n.t('learningLoadError')));
}
return const Center(child: CircularProgressIndicator());
}
return ListView(padding: const EdgeInsets.all(20), children: [
Text(l10n.t('learningFirstDaysTitle'),
style: Theme.of(context)
.textTheme
.headlineSmall
?.copyWith(fontWeight: FontWeight.w900)),
const SizedBox(height: 8),
Text(l10n.t('learningFirstDaysTeaser')),
const SizedBox(height: 20),
for (final c in s.data!)
Card(
child: ListTile(
title: Text(c.title,
style:
const TextStyle(fontWeight: FontWeight.w800)),
subtitle: Text(c.description),
trailing: const Icon(Icons.chevron_right),
onTap: () {
AnalyticsService.instance
.track('learning_course_open', properties: {
'course_id': c.id,
'source': 'new_in_weimar'
});
Navigator.of(context).push(MaterialPageRoute(
builder: (_) =>
LearningCoursePage(courseId: c.id)));
}))
]);
}));
}
}

