Compare commits

...
5 Commits
Author SHA1 Message Date
marco 0b92efc56d Made text selectable 2026-07-16 14:39:13 +02:00
marco 3782145857 updated profile picture 2026-07-16 14:29:47 +02:00
marco b5254fa104 changed mail to link 2026-07-16 14:29:38 +02:00
marco 7fb16c6319 fixed text clipping 2026-07-16 14:23:55 +02:00
marco fa0065a3f4 fixed english translations 2026-07-16 14:23:48 +02:00
5 changed files with 79 additions and 82 deletions
+2 -2
View File
@@ -19,7 +19,7 @@
{ {
"name": "Nagarro GmbH", "name": "Nagarro GmbH",
"location": "Pirmasens, Germany", "location": "Pirmasens, Germany",
"title": "Development", "title": "SAP-Development",
"description": "Development of custom SAP applications using ABAP OO and SQL. Mobile application developed with Dart and Flutter as part of my bachelor's thesis.", "description": "Development of custom SAP applications using ABAP OO and SQL. Mobile application developed with Dart and Flutter as part of my bachelor's thesis.",
"startDate": "October 2021", "startDate": "October 2021",
"endDate": "May 2022" "endDate": "May 2022"
@@ -27,7 +27,7 @@
{ {
"name": "psb GmbH", "name": "psb GmbH",
"location": "Pirmasens, Germany", "location": "Pirmasens, Germany",
"title": "Interne Full-Stack Development", "title": "Internal Full-Stack Development",
"description": "Development of internal applications using C#, WPF, and Oracle SQL to optimize internal business processes.", "description": "Development of internal applications using C#, WPF, and Oracle SQL to optimize internal business processes.",
"startDate": "July 2019", "startDate": "July 2019",
"endDate": "December 2020" "endDate": "December 2020"
Executable → Regular
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

After

Width:  |  Height:  |  Size: 1.0 MiB

+44 -40
View File
@@ -50,50 +50,54 @@ class _LandingPageState extends State<LandingPage> {
(MediaQuery.of(context).size.width - _getMainContentWidth()) / 2; (MediaQuery.of(context).size.width - _getMainContentWidth()) / 2;
Widget _getSideBar() { Widget _getSideBar() {
return Column( return SelectionArea(
children: [ child: Column(
ContentBlock( children: [
blockTitle: AppLocalizations.of(context)!.skills, ContentBlock(
contentType: ContentType.skills, blockTitle: AppLocalizations.of(context)!.skills,
content: contentProvider.getContent(ContentType.skills), contentType: ContentType.skills,
), content: contentProvider.getContent(ContentType.skills),
const Padding(padding: EdgeInsets.only(bottom: 25)), ),
ContentBlock( const Padding(padding: EdgeInsets.only(bottom: 25)),
blockTitle: AppLocalizations.of(context)!.languages, ContentBlock(
contentType: ContentType.language, blockTitle: AppLocalizations.of(context)!.languages,
content: contentProvider.getContent(ContentType.language), contentType: ContentType.language,
), content: contentProvider.getContent(ContentType.language),
], ),
],
),
); );
} }
Widget _getMainContent() { Widget _getMainContent() {
return Column( return SelectionArea(
children: [ child: Column(
ContentBlock( children: [
blockTitle: AppLocalizations.of(context)!.work_experience, ContentBlock(
contentType: ContentType.experience, blockTitle: AppLocalizations.of(context)!.about_me,
content: contentProvider.getContent(ContentType.experience), contentType: ContentType.text,
), content: contentProvider.getContent(ContentType.text),
const Padding(padding: EdgeInsets.only(bottom: 25)), ),
ContentBlock( const Padding(padding: EdgeInsets.only(bottom: 25)),
blockTitle: AppLocalizations.of(context)!.education, ContentBlock(
contentType: ContentType.education, blockTitle: AppLocalizations.of(context)!.work_experience,
content: contentProvider.getContent(ContentType.education), contentType: ContentType.experience,
), content: contentProvider.getContent(ContentType.experience),
const Padding(padding: EdgeInsets.only(bottom: 25)), ),
ContentBlock( const Padding(padding: EdgeInsets.only(bottom: 25)),
blockTitle: AppLocalizations.of(context)!.additional_skills, ContentBlock(
contentType: ContentType.generalSkills, blockTitle: AppLocalizations.of(context)!.education,
content: contentProvider.getContent(ContentType.generalSkills), contentType: ContentType.education,
), content: contentProvider.getContent(ContentType.education),
const Padding(padding: EdgeInsets.only(bottom: 25)), ),
ContentBlock( const Padding(padding: EdgeInsets.only(bottom: 25)),
blockTitle: AppLocalizations.of(context)!.about_me, ContentBlock(
contentType: ContentType.text, blockTitle: AppLocalizations.of(context)!.additional_skills,
content: contentProvider.getContent(ContentType.text), contentType: ContentType.generalSkills,
), content: contentProvider.getContent(ContentType.generalSkills),
], ),
],
),
); );
} }
+24 -36
View File
@@ -71,25 +71,20 @@ class ContentListTile extends StatelessWidget {
title: Column( title: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Text(
mainAxisAlignment: MainAxisAlignment.start, name,
children: [ style: Theme.of(context).textTheme.titleLarge,
Text(name), maxLines: 2,
Text(', $location'), ),
if (Breakpoints.xl < screenWidth) const Text(' - '), Text(
if (Breakpoints.xl < screenWidth) location,
Text( style: Theme.of(context).textTheme.bodyMedium,
title, maxLines: 2,
style: ),
TextStyle(color: Theme.of(context).colorScheme.primary), Text(
), title,
], style: TextStyle(color: Theme.of(context).colorScheme.primary),
), ),
if (Breakpoints.xl >= screenWidth)
Text(
title,
style: TextStyle(color: Theme.of(context).colorScheme.primary),
),
], ],
), ),
titleAlignment: ListTileTitleAlignment.titleHeight, titleAlignment: ListTileTitleAlignment.titleHeight,
@@ -119,25 +114,18 @@ class ContentListTile extends StatelessWidget {
title: Column( title: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Text(
mainAxisAlignment: MainAxisAlignment.start, name,
children: [ style: Theme.of(context).textTheme.titleLarge,
Text(name), ),
Text(', $location'), Text(
if (Breakpoints.xl < screenWidth) const Text(' - '), location,
if (Breakpoints.xl < screenWidth) style: Theme.of(context).textTheme.bodyMedium,
Text( ),
title, Text(
style: title,
TextStyle(color: Theme.of(context).colorScheme.primary), style: TextStyle(color: Theme.of(context).colorScheme.primary),
),
],
), ),
if (Breakpoints.xl >= screenWidth)
Text(
title,
style: TextStyle(color: Theme.of(context).colorScheme.primary),
),
], ],
), ),
titleAlignment: ListTileTitleAlignment.titleHeight, titleAlignment: ListTileTitleAlignment.titleHeight,
+9 -4
View File
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
class Profile extends StatelessWidget { class Profile extends StatelessWidget {
const Profile({super.key}); const Profile({super.key});
@@ -32,10 +33,14 @@ class Profile extends StatelessWidget {
style: Theme.of(context).textTheme.titleLarge, style: Theme.of(context).textTheme.titleLarge,
), ),
const Padding(padding: EdgeInsets.symmetric(vertical: 5)), const Padding(padding: EdgeInsets.symmetric(vertical: 5)),
Text( TextButton(
'marco@skup.in', onPressed: () => launchUrl(Uri.parse('mailto:marco@skup.in')),
textAlign: TextAlign.center, style: ButtonStyle(
style: Theme.of(context).textTheme.bodyMedium, textStyle: WidgetStatePropertyAll(
Theme.of(context).textTheme.bodyMedium,
),
),
child: const Text('marco@skup.in'),
), ),
], ],
), ),