<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marco Napoli</title>
    <description>The latest articles on DEV Community by Marco Napoli (@jedipixels).</description>
    <link>https://dev.to/jedipixels</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F144066%2Fb441e771-2f59-4141-81c0-c03adda176d4.jpg</url>
      <title>DEV Community: Marco Napoli</title>
      <link>https://dev.to/jedipixels</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jedipixels"/>
    <language>en</language>
    <item>
      <title>OnTrack Goals Habits Tracker on Autopilot</title>
      <dc:creator>Marco Napoli</dc:creator>
      <pubDate>Tue, 11 Mar 2025 05:10:57 +0000</pubDate>
      <link>https://dev.to/jedipixels/ontrack-goals-habits-tracker-on-autopilot-4ikp</link>
      <guid>https://dev.to/jedipixels/ontrack-goals-habits-tracker-on-autopilot-4ikp</guid>
      <description>&lt;p&gt;OnTrack is the app that I built to keep up with setting Goals to Build or Break habits with a twist, it’s on Autopilot…&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8qczpziayurgk7hxuymh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8qczpziayurgk7hxuymh.png" alt="OnTrack on iPad" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;:&lt;br&gt;
With tracking habits, you need to check multiple times a day to mark them done. This task is monotonous to me and I wanted to streamline this process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;br&gt;
I built OnTrack Goals Habits with Autopilot to help me to set my goals to build or break habits with Auto Check-Ins, “Mark only if Missed”. That’s it, only Check-In if you missed building or breaking of that habit.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Jn5XhT8_Mnc"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About the app&lt;/strong&gt;:&lt;br&gt;
Build or break habits with Auto Check-Ins, “Mark only if Missed” it’s on Autopilot. Accountability, streak tracking, &amp;amp; customizable icons. See progress in vibrant charts.&lt;/p&gt;

&lt;p&gt;OnTrack Goal Build or Break Habits with Automatic Check-Ins, you only need to “Mark if Missed”, it’s on Autopilot.&lt;/p&gt;

&lt;p&gt;Transform your daily routine with Goal Build or Break Habits, the sleek and intuitive habit tracker designed to help you effortlessly build positive habits or break unwanted ones. With automatic check-ins and stunning visualizations, staying on track has never been easier or more motivating.&lt;/p&gt;

&lt;p&gt;Set personalized goals — like walking 20 minutes daily or limiting coffee to 3 cups — and let Goal sync with your habits automatically. Track your progress with colorful streak charts, monthly and weekly stats, and detailed history to keep you inspired. Choose from a wide range of activity icons to customize your journey, and use smart features like “Mark if Missed” to stay accountable.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/aD5Dbf5lg0o"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Choose OnTrack?&lt;/strong&gt;&lt;br&gt;
• Automatic Check-Ins: Effortless tracking with real-time updates.&lt;br&gt;
• You only need to “Mark if Missed”, it’s on auto-pilot&lt;br&gt;
• Build or Break: Tailor goals for forming good habits or ditching bad ones.&lt;br&gt;
• Stunning Visuals: Beautiful streak trackers, bar graphs, and progress grids in a vibrant purple design.&lt;br&gt;
• Customizable Icons: Pick from fitness, financial, and more to match your goals.&lt;br&gt;
• Detailed History: Review missed streaks and celebrate consistent success.&lt;br&gt;
• Perfect for anyone looking to improve their life, Goal combines simplicity with powerful tools to help you achieve lasting change. Download now and start building your best habits today!&lt;br&gt;
• iCloud Sync between devices&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;iOS App Store&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://apps.apple.com/us/app/ontrack-goals-habits-tracker/id6742162476" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fis1-ssl.mzstatic.com%2Fimage%2Fthumb%2FPurple211%2Fv4%2F05%2F77%2Fc6%2F0577c6c4-8d4d-006c-3bc2-64af99b2075c%2FAppIcon-0-0-1x_U007epad-0-1-85-220.png%2F1200x630wa.png" height="420" class="m-0" width="800"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://apps.apple.com/us/app/ontrack-goals-habits-tracker/id6742162476" rel="noopener noreferrer" class="c-link"&gt;
          
      ‎OnTrack Goals Habits Tracker on the App Store
    
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          ‎OnTrack Goal Build or Break Habits with Automatic Check-Ins, you only need to “Mark if Missed”, it's on Autopilot. 
Transform your daily routine with Goal Build or Break Habits, the sleek and intuitive habit tracker designed to help you effortlessly build positive habits or break unwanted ones. With…
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
        apps.apple.com
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://pixolini.com/ontrack/" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpixolini.com%2Fwp-content%2Fuploads%2F2025%2F02%2FOnTrack-Transparent-Clipped-1440.png" height="610" class="m-0" width="800"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://pixolini.com/ontrack/" rel="noopener noreferrer" class="c-link"&gt;
          OnTrack Goals Habits Tracker – Pixolini – Apps
        &lt;/a&gt;
      &lt;/h2&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi0.wp.com%2Fpixolini.com%2Fwp-content%2Fuploads%2F2017%2F01%2FPropertyFlipOrHold-Icon-256.png%3Ffit%3D32%252C32%26ssl%3D1" width="32" height="32"&gt;
        pixolini.com
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>habits</category>
      <category>habittracker</category>
      <category>goals</category>
      <category>streaks</category>
    </item>
    <item>
      <title>Flutter Hero Animation and PageRouteBuilder Transition</title>
      <dc:creator>Marco Napoli</dc:creator>
      <pubDate>Wed, 20 Jan 2021 20:59:39 +0000</pubDate>
      <link>https://dev.to/jedipixels/flutter-hero-animation-and-pageroutebuilder-transition-30b4</link>
      <guid>https://dev.to/jedipixels/flutter-hero-animation-and-pageroutebuilder-transition-30b4</guid>
      <description>&lt;p&gt;Video Tutorial&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/EtImGX-5xvI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jedipixels.dev/flutter-hero-widget-and-pageroutebuilder-animation" rel="noopener noreferrer"&gt;Blog Article&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjaqp4q9pj627ep8yt1bd.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjaqp4q9pj627ep8yt1bd.gif" alt="Sample Project" width="222" height="480"&gt;&lt;/a&gt;&lt;br&gt;
Hero Animation and PageRouteBuilder Transition&lt;/p&gt;
&lt;h1&gt;
  
  
  Using Hero, Navigator and PageRouteBuilder to create custom Transitions
&lt;/h1&gt;

&lt;p&gt;In this project, you are going to take a look at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How Hero animation allows a widget transition to fly into place from one page to another&lt;/li&gt;
&lt;li&gt;How to use the PageRouteBuilder to create custom navigation transitions with Hero animation&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Hero Widget
&lt;/h1&gt;

&lt;p&gt;The Hero widget is a great out-of-the-box animation to convey the navigation action of a widget flying into place from one page to another. The Hero animation is a shared element transition (animation) between two different pages.&lt;/p&gt;

&lt;p&gt;To visualize the animation, imagine seeing a superhero flying into action. For example, you have a list of journal entries with a photo thumbnail, the user selects an entry, and you see the photo thumbnail transition to the detail page by moving and growing to full size. The photo thumbnail is the superhero, and when tapped, it flies into action by moving from the list page to the detail page and lands perfectly on the correct location at the top of the detail page showing the full photo. When the detail page is dismissed, the Hero widget flies back to the original page, position, and size.&lt;/p&gt;
&lt;h1&gt;
  
  
  Hero Widget Code
&lt;/h1&gt;

&lt;p&gt;The Hero widget has the animation features built in; there’s no need to write custom code to handle the size and animation between pages.&lt;/p&gt;

&lt;p&gt;The Hero child widget is marked for hero animation. When the Navigator pushes or pops a PageRoute, the entire screen’s content is replaced. This means during the animation transition the Hero widget is not shown in the original position in both the old and new routes, but it moves and resizes from one page to another. Very important, each Hero tag must be unique and match on both the originating and landing pages.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Home Page
Hero(
  tag: 'image',
  child: Image.asset('assets/image.png'),
)
// Details page
Hero(
  tag: 'image',
  child: Image.asset('assets/image.png'),
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  PageRouteBuilder
&lt;/h1&gt;

&lt;p&gt;The PageRouteBuilder class is used to create custom route transitions. PageRouteBuilder provides an Animation object. This Animation can be used with Tween and Curve objects to customize the transition animation.&lt;/p&gt;

&lt;p&gt;You need to define a pageBuilder function to create the route's content and define the transitionBuilder function to add transition animation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Navigator.of(context).push(
  PageRouteBuilder(
    transitionDuration: Duration(milliseconds: 1000),
    pageBuilder: (
        BuildContext context,
        Animation&amp;lt;double&amp;gt; animation,
        Animation&amp;lt;double&amp;gt; secondaryAnimation) {
      return Details();
    },
    transitionsBuilder: (
        BuildContext context,
        Animation&amp;lt;double&amp;gt; animation,
        Animation&amp;lt;double&amp;gt; secondaryAnimation,
        Widget child) {
      return Align(
        child: FadeTransition(
          opacity: animation,
          child: child,
        ),
      );
    },
  ),
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  How it Works
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Hero Widget
&lt;/h2&gt;

&lt;p&gt;The hero animation is a powerful built-in animation to convey an action by automatically animating a widget from one page to another to the correct size and position. When you navigate back to the previous page, the Hero animates back to the original position. Each Hero tag must be unique and match on both the originating and landing pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Navigator PageRouteBuilder
&lt;/h2&gt;

&lt;p&gt;The PageRouteBuilder class is used to create custom route transitions. PageRouteBuilder provides an Animation object. This Animation can be used with Tween and Curve objects to customize the transition animation.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://twitter.com/JediPixels" rel="noopener noreferrer"&gt;Find me on Twitter @JediPixels&lt;/a&gt;&lt;br&gt;
&lt;a href="https://JediPixels.dev" rel="noopener noreferrer"&gt;For more information: JediPixels.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>pageroutebuilder</category>
      <category>transition</category>
    </item>
  </channel>
</rss>
