diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b2fea1..56db8af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 2.2.0 + +- NEW: Added an animation to the home page subtitle to switch between the subtitle and motto. +- NEW: Added 'Report an Issue' button on the home page, redirecting to the GitHub issues page. + ## 2.1.2 - ENHANCED: Added thumbnail images for videos. diff --git a/assets/json/projects.json b/assets/json/projects.json index 90ef35f..3c1723f 100644 --- a/assets/json/projects.json +++ b/assets/json/projects.json @@ -6,6 +6,11 @@ "finalDate": "2024-04-16T00:00:00Z", "description": "Designed for mobile sim racing, the AMG GT3/GT4 Mobile Sim Wheel kit is a completely 3D-printable steering wheel. It is a remix of one of my earlier and highly popular projects, the AMG GT3 Wheel Kit for Thrustmaster, now optimized for mobile use. The AMG inspired wheel has been shrunk down to 230mm x 130mm, with built in grip handles and slots for attaching a phone mount. The wheel supports mobile games using tilt to steer and tap to accelerate or break.\n\nThe kit itself contains all STL files for the wheel, phone mount, and an assembly manual. Total print time can be completed in under 15 hours (varies based on print settings and materials), while assembly time takes approximately 30 minutes.", "media": [ + { + "type": "youTubeVideo", + "caption": "Demo Video - Real Racing 3", + "path": "4QhZNsjgN2k" + }, { "type": "localImage", "caption": "CAD Rendering Vs. Final Assembly", diff --git a/lib/common/strings.dart b/lib/common/strings.dart index 665c6a3..2224e07 100644 --- a/lib/common/strings.dart +++ b/lib/common/strings.dart @@ -4,7 +4,7 @@ class Strings { Strings._(); static const String currentLocation = 'VA, USA'; - static const String lastUpdated = 'Updated MAR 2024'; + static const String lastUpdated = 'Updated APR 2024'; // Routes static const String loadingRoute = '/loading'; @@ -26,7 +26,8 @@ class Strings { static const String am3LabUrl = 'https://wordpressua.uark.edu/am3/'; static const String uarkUrl = 'https://catalog.uark.edu/plangrids/computerscience_bs/'; - static const String sponsorUrl = 'https://www.buymeacoffee.com/plguerra'; + static const String issuesUrl = + 'https://github.com/PLGuerraDesigns/portfolio/issues'; static const String contactEmailUrl = 'mailto:plguerra@outlook.com'; static const String sourceCodeUrl = 'https://github.com/PLGuerraDesigns/portfolio'; @@ -61,6 +62,7 @@ class Strings { static const String name = 'Pablo L. Guerra'; static const String subtitle = 'Software Engineer • Innovator • Technologist'; + static const String motto = 'Men for Others'; static const String poweredByFlutter = 'Powered by Flutter'; static const String professional = 'Professional'; static const String personal = 'Personal'; @@ -80,7 +82,7 @@ class Strings { static const String nextProject = 'Next Project'; static const String personalProjects = 'Personal Projects'; static const String contactMe = 'Contact Me'; - static const String sponsor = 'Sponsor'; + static const String reportAnIssue = 'Report an Issue'; static const String moreInfo = 'More Info'; static const String present = 'Present'; static const String tags = 'Tags'; diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 33f78f6..46bf0a7 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -1,3 +1,4 @@ +import 'package:animated_text_kit/animated_text_kit.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -83,14 +84,29 @@ class HomeScreen extends StatelessWidget { subtitle: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Flexible( - child: Text( - Strings.subtitle, - style: compact - ? Theme.of(context).textTheme.labelSmall - : Theme.of(context).textTheme.titleMedium, + DefaultTextStyle( + style: compact + ? Theme.of(context).textTheme.labelSmall! + : Theme.of(context).textTheme.titleMedium!, + textAlign: TextAlign.left, + child: AnimatedTextKit( + repeatForever: true, + pause: const Duration(milliseconds: 250), + animatedTexts: [ + RotateAnimatedText( + Strings.subtitle, + duration: const Duration(seconds: 7), + ), + RotateAnimatedText( + Strings.motto, + duration: const Duration(seconds: 7), + ), + ], ), ), + SizedBox( + height: compact ? 40 : 55, + ), if (!compact) location(), ], ), @@ -257,22 +273,11 @@ class HomeScreen extends StatelessWidget { title: Strings.contactMe, onTap: () => RedirectHandler.openUrl(Strings.contactEmailUrl), ), - // FrostedActionButton( - // icon: icon(Icons.monetization_on_rounded), - // title: Strings.sponsor, - // onTap: () => RedirectHandler.openUrl(Strings.sponsorUrl), - // ), - // FrostedActionButton( - // icon: Image.asset( - // Strings.resumeBuilderIconPath, - // color: Theme.of(context).colorScheme.onSurface, - // height: 46, - // width: 46, - // ), - // title: Strings.resumeBuilder, - // onTap: () => - // RedirectHandler.openUrl(Strings.flutterResumeBuilderUrl), - // ), + FrostedActionButton( + icon: icon(Icons.bug_report_rounded), + title: Strings.reportAnIssue, + onTap: () => RedirectHandler.openUrl(Strings.issuesUrl), + ), ], ), ), diff --git a/pubspec.lock b/pubspec.lock index e69845b..f475f7a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,14 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + animated_text_kit: + dependency: "direct main" + description: + name: animated_text_kit + sha256: "37392a5376c9a1a503b02463c38bc0342ef814ddbb8f9977bc90f2a84b22fa92" + url: "https://pub.dev" + source: hosted + version: "4.2.2" args: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 0e1757b..dcbdbcd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: plg_portfolio description: Pablo L. Guerra's web-app portfolio powered by Flutter. publish_to: "none" -version: 2.1.0+37 +version: 2.2.0+38 environment: sdk: ">=3.1.1 <4.0.0" @@ -23,6 +23,7 @@ dependencies: shimmer: ^3.0.0 zoom_pinch_overlay: ^1.4.3 image_network: ^2.5.6 + animated_text_kit: ^4.2.2 dev_dependencies: flutter_test: