content localized on locale change
This commit is contained in:
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user