diff --git a/lib/pages/landing_page.dart b/lib/pages/landing_page.dart index 36d914d..077ae03 100644 --- a/lib/pages/landing_page.dart +++ b/lib/pages/landing_page.dart @@ -39,136 +39,6 @@ class _LandingPageState extends State { double _getSidebarWidth() => (MediaQuery.of(context).size.width - _getMainContentWidth()) / 2; - @override - Widget build(BuildContext context) { - final screenWidth = MediaQuery.of(context).size.width; - return Scaffold( - appBar: AppBar( - title: const Text('Landing'), - actions: const [ - TextButton(onPressed: _launchURL, child: Text('Source Code')), - ], - ), - body: !loadingDone - // While the content is being loaded from JSON, show a LoadingIndicator - ? const Center( - child: Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - CircularProgressIndicator(), - Padding(padding: EdgeInsets.symmetric(vertical: 10)), - Text('Loading...') - ], - ), - ) - : SingleChildScrollView( - child: LayoutBuilder( - builder: (context, constraints) { - if (constraints.maxWidth > Breakpoints.xl2) { - return Stack( - children: [ - Align( - alignment: Alignment.topLeft, - child: SizedBox( - width: _getSidebarWidth(), - child: const Padding( - padding: EdgeInsets.symmetric(horizontal: 50), - child: Profile(), - ), - ), - ), - Align( - alignment: Alignment.topRight, - child: SizedBox( - width: _getSidebarWidth(), - child: Padding( - padding: - const EdgeInsets.symmetric(horizontal: 50), - child: _getSideBar(), - ), - ), - ), - Center( - child: SizedBox( - width: _getMainContentWidth(), - child: _getMainContent(), - ), - ), - ], - ); - } else if (constraints.maxWidth > Breakpoints.xl) { - return Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Expanded( - child: Column( - children: [ - const Padding( - padding: EdgeInsets.symmetric(horizontal: 50), - child: Profile(), - ), - Padding( - padding: - const EdgeInsets.symmetric(horizontal: 50), - child: _getSideBar(), - ), - ], - ), - ), - SizedBox( - width: 900, - child: _getMainContent(), - ), - const Padding(padding: EdgeInsets.only(right: 50)), - ], - ); - } else if (constraints.maxWidth > Breakpoints.lg) { - return Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Expanded( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 25), - child: Column( - children: [ - const Profile(), - _getSideBar(), - ], - ), - ), - ), - SizedBox( - width: 650, - child: _getMainContent(), - ), - const Padding(padding: EdgeInsets.only(right: 25)), - ], - ); - } else { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 25), - child: Column( - children: [ - const Profile(), - const Padding(padding: EdgeInsets.only(bottom: 25)), - _getMainContent(), - const Padding(padding: EdgeInsets.only(bottom: 25)), - _getSideBar(), - ], - ), - ); - } - }, - ), - ), - ); - } - Widget _getSideBar() { return ContentBox( title: 'Fähigkeiten', @@ -194,6 +64,134 @@ class _LandingPageState extends State { ], ); } + + Widget _buildLayout(BuildContext context, BoxConstraints constraints) { + if (constraints.maxWidth > Breakpoints.xl2) { + return Stack( + children: [ + Align( + alignment: Alignment.topLeft, + child: SizedBox( + width: _getSidebarWidth(), + child: const Padding( + padding: EdgeInsets.symmetric(horizontal: 50), + child: Profile(), + ), + ), + ), + Align( + alignment: Alignment.topRight, + child: SizedBox( + width: _getSidebarWidth(), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 50), + child: _getSideBar(), + ), + ), + ), + Center( + child: SizedBox( + width: _getMainContentWidth(), + child: _getMainContent(), + ), + ), + ], + ); + } else if (constraints.maxWidth > Breakpoints.xl) { + return Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Expanded( + child: Column( + children: [ + const Padding( + padding: EdgeInsets.symmetric(horizontal: 50), + child: Profile(), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 50), + child: _getSideBar(), + ), + ], + ), + ), + SizedBox( + width: 900, + child: _getMainContent(), + ), + const Padding(padding: EdgeInsets.only(right: 50)), + ], + ); + } else if (constraints.maxWidth > Breakpoints.lg) { + return Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 25), + child: Column( + children: [ + const Profile(), + _getSideBar(), + ], + ), + ), + ), + SizedBox( + width: 650, + child: _getMainContent(), + ), + const Padding(padding: EdgeInsets.only(right: 25)), + ], + ); + } else { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 25), + child: Column( + children: [ + const Profile(), + const Padding(padding: EdgeInsets.only(bottom: 25)), + _getMainContent(), + const Padding(padding: EdgeInsets.only(bottom: 25)), + _getSideBar(), + ], + ), + ); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Landing'), + actions: const [ + TextButton(onPressed: _launchURL, child: Text('Source Code')), + ], + ), + body: !loadingDone + ? const Center( + child: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CircularProgressIndicator(), + Padding(padding: EdgeInsets.symmetric(vertical: 10)), + Text('Loading...') + ], + ), + ) + : SingleChildScrollView( + child: LayoutBuilder( + builder: _buildLayout, + ), + ), + ); + } } void _launchURL() async { diff --git a/lib/widgets/skill_list_tile.dart b/lib/widgets/skill_list_tile.dart index 3cdd443..0bd6070 100644 --- a/lib/widgets/skill_list_tile.dart +++ b/lib/widgets/skill_list_tile.dart @@ -21,8 +21,11 @@ class SkillListTile extends StatelessWidget { if (percentage != null) Expanded( flex: 5, - child: LinearProgressIndicator( - value: double.parse(percentage!) / 100, + child: Padding( + padding: const EdgeInsets.only(left: 8.0), + child: LinearProgressIndicator( + value: double.parse(percentage!) / 100, + ), ), ), ],