content localized on locale change

This commit is contained in:
2024-12-18 19:30:13 +01:00
parent a984fc15b0
commit 6587828a0b
9 changed files with 158 additions and 94 deletions

View File

@@ -1,4 +1,6 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:resume/providers/locale_provider.dart';
import 'package:resume/services/breakpoints.dart';
import 'package:resume/widgets/language_dropdown.dart';
import 'package:resume/widgets/profile.dart';
@@ -6,7 +8,7 @@ import 'package:url_launcher/url_launcher.dart';
import 'package:resume/constants.dart' show ContentType;
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import '../services/content_provider.dart';
import '../providers/content_provider.dart';
import '../widgets/content_block.dart';
class LandingPage extends StatefulWidget {
@@ -20,14 +22,18 @@ class LandingPage extends StatefulWidget {
class _LandingPageState extends State<LandingPage> {
bool loadingDone = false;
late ContentProvider contentProvider;
late Locale currentLocale;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
await ContentProvider.init(context);
await Provider.of<ContentProvider>(context, listen: false)
.loadContent(context);
setState(() => loadingDone = true);
});
currentLocale = context.read<LocaleProvider>().locale;
}
double _getMainContentWidth() {
@@ -49,11 +55,13 @@ class _LandingPageState extends State<LandingPage> {
ContentBlock(
blockTitle: AppLocalizations.of(context)!.skills,
contentType: ContentType.skills,
content: contentProvider.getContent(ContentType.skills),
),
const Padding(padding: EdgeInsets.only(bottom: 25)),
ContentBlock(
blockTitle: AppLocalizations.of(context)!.languages,
contentType: ContentType.language,
content: contentProvider.getContent(ContentType.language),
),
],
);
@@ -65,21 +73,25 @@ class _LandingPageState extends State<LandingPage> {
ContentBlock(
blockTitle: AppLocalizations.of(context)!.work_experience,
contentType: ContentType.experience,
content: contentProvider.getContent(ContentType.experience),
),
const Padding(padding: EdgeInsets.only(bottom: 25)),
ContentBlock(
blockTitle: AppLocalizations.of(context)!.education,
contentType: ContentType.education,
content: contentProvider.getContent(ContentType.education),
),
const Padding(padding: EdgeInsets.only(bottom: 25)),
ContentBlock(
blockTitle: AppLocalizations.of(context)!.additional_skills,
contentType: ContentType.generalSkills,
content: contentProvider.getContent(ContentType.generalSkills),
),
const Padding(padding: EdgeInsets.only(bottom: 25)),
ContentBlock(
blockTitle: AppLocalizations.of(context)!.about_me,
contentType: ContentType.text,
content: contentProvider.getContent(ContentType.text),
),
],
);
@@ -188,6 +200,20 @@ class _LandingPageState extends State<LandingPage> {
@override
Widget build(BuildContext context) {
contentProvider = context.read<ContentProvider>();
if (currentLocale != context.read<LocaleProvider>().locale) {
loadingDone = false;
WidgetsBinding.instance.addPostFrameCallback((_) async {
await Provider.of<ContentProvider>(context, listen: false)
.loadContent(context);
setState(() {
currentLocale = context.read<LocaleProvider>().locale;
loadingDone = true;
});
});
}
return Scaffold(
appBar: AppBar(
title: Text(AppLocalizations.of(context)!.resume),