{"id":7375,"date":"2020-12-31T07:05:29","date_gmt":"2020-12-31T07:05:29","guid":{"rendered":"https:\/\/www.getwidget.dev\/blogs\/flutter-sticky-header\/"},"modified":"2024-11-21T11:21:29","modified_gmt":"2024-11-21T11:21:29","slug":"flutter-sticky-header","status":"publish","type":"post","link":"https:\/\/www.getwidget.dev\/blog\/flutter-sticky-header\/","title":{"rendered":"Flutter Sticky Header &#8211; A widget with a fixed header"},"content":{"rendered":"<p><a href=\"https:\/\/docs.getwidget.dev\/gf-sticky-header\/\" target=\"_blank\" rel=\"noopener\"><strong>Flutter Sticky header<\/strong><\/a><em> <\/em>is also called fixed header. It is a smart navigation tool by using which can fix the header to the top of the screen as the user scrolls down a page.<\/p>\n<h3 id=\"flutter-sticky-header\">Flutter Sticky Header<\/h3>\n<p><strong>Flutter Sticky Header Widget<\/strong><em> <\/em>is a term used to describe a fixed navigation menu on a page that remains visible and in the same position as the user scrolls down and moves about a site. Sticky navigation examples, best practices, and demonstrations of how different sites and brands interpret this standard are plentiful across the mobile &#038; web.<\/p>\n<p>It is the fastest way to access the information for users which is making sticky header more demanding for user navigation. <\/p>\n<h3 id=\"flutter-sticky-header-with-gfwidget\">Flutter Sticky Header With GFWidget<\/h3>\n<p><strong>GFStickyHeader<\/strong> is a <strong>Flutter StickyHeader<\/strong> that has a fixed header at the top of the screen that has scrollable content when the user scrolls down if the content is more. It is useful in making the user interact with the app smoothly as the header has the main navigations in the header.<\/p>\n<p><strong>GFStickyHeader<\/strong> allows you to speed up your <a href=\"https:\/\/www.ionicfirebaseapp.com\/flutter-app-development-company\" target=\"_blank\" rel=\"noopener\">Flutter app development<\/a> by 20-30%. It has almost all <a href=\"https:\/\/www.getwidget.dev\/blog\/what-is-widget-in-flutter\/\" data-wpil-monitor-id=\"218\">widget<\/a> that allows you to enhance your Flutter UI design and speed up flutter development with fully customizable features.<\/p>\n<blockquote><p><em>Now here is we are going to talk about what is <strong>GetWidget<\/strong> Sticky Header and how we implement this on Flutter app to build awesome Flutter Sticky Header for an app.<\/em><\/p><\/blockquote>\n<h3 id=\"how-to-get-started\">How to Get Started<\/h3>\n<p>Now here is the guide about how we should start developing <strong>GFStickyHeader <\/strong>Widget with the use of <strong>GetWidget<\/strong> UI Library.<\/p>\n<p><a href=\"https:\/\/docs.getwidget.dev\/getting-started\/\" target=\"_blank\" rel=\"noopener\"><strong>Getting started<\/strong><\/a> will guide you how to start building a beautiful flutter application with <strong>GetWidget<\/strong> UI library. You have to install the package from <strong>pub.dev<\/strong>, import the package in your Flutter project.<\/p>\n<blockquote><p><em>Install Package from pub.dev :<\/em><\/p><\/blockquote>\n<p><a href=\"https:\/\/pub.dev\/packages\/getwidget\/\" target=\"_blank\" rel=\"noopener\"><strong>https:\/\/pub.dev\/packages\/getwidget<\/strong><\/a><\/p>\n<h3 id=\"import-full-package\">Import full package:<\/h3>\n<p>import &#8216;package:getwidget\/getwidget.dart&#8217;;<\/p>\n<p><strong>Note: dependencies: getwidget: ^ 4.0.0<\/strong><\/p>\n<blockquote><p><em>Keep playing with the pre-built UI components.\u200c<\/em><\/p><\/blockquote>\n<h3 id=\"gf-basic-flutter-sticky-header\"> GF Basic Flutter Sticky Header<\/h3>\n<p><strong>GetWidget StickyHeader<\/strong> can be customized accordingly wherein it should always be wrapped inside the ListView, GridView, CustomScrollView, SingleChildScrollView, or similar widgets.<\/p>\n<p>The below example shows a basic <strong>GFSticky Header<\/strong>.<\/p>\n<figure class=\"kg-card kg-code-card\">\n<pre><code class=\"language-javascript\">ListView.builder(\n    itemCount: imageList.length,\n    itemBuilder: (context, index) => GFStickyHeader(\n          stickyContent: Container(\n            child: Container(\n              alignment: AlignmentDirectional.center,\n              height: 50,\n              width: MediaQuery.of(context).size.width,\n              color: Color(0xFF42335d),\n              padding: EdgeInsets.symmetric(horizontal: 16.0),\n              child: Row(\n                children: [\n                  Text(\n                    'Contact Group $index',\n                    style: const TextStyle(color: Colors.white),\n                  ),\n                ],\n              ),\n            ),\n          ),\n          content: Container(\n            height: 300,\n            child: ListView.builder(\n                physics: ScrollPhysics(),\n                shrinkWrap: true,\n                scrollDirection: Axis.vertical,\n                itemCount: 8,\n                itemBuilder: (BuildContext context, int index) {\n                  return SingleChildScrollView(\n                    child: Column(\n                      children: [\n                        GFCheckboxListTile(\n                          titleText: 'Eva Mendez',\n                          subtitleText: 'Hello',\n                          avatar: GFAvatar(\n                            backgroundImage: \n                      AssetImage('asset image here),\n                          ),\n                          size: 25,\n                          activebgColor: Colors.green,\n                          activeIcon: Icon(\n                            Icons.check,\n                            size: 15,\n                            color: Colors.white,\n                          ),\n                          type: GFCheckboxType.circle,\n                          onChanged: (val) {\n                            setState(() {\n                              check = val;\n                            });\n                          },\n                          value: check,\n                          inactiveIcon: null,\n                        ),\n                        Padding(\n                          padding: const EdgeInsets.symmetric(\n                              horizontal: 20.0),\n                          child: Divider(),\n                        ),\n                      ],\n                    ),\n                  );\n                }),\n          ),\n        )),<\/code><\/pre><figcaption>\n<p><span style=\"white-space: pre-wrap;\">Flutter Sticky Header Example Code Snippet<\/span><\/p>\n<\/figcaption><\/figure>\n<h3 id=\"flutter-sticky-header-types\">Flutter Sticky Header types<\/h3>\n<p>The Headers can be placed vertically or horizontally to the screen depending upon the requirement of the app and the user. Accordingly, we have the types of headers and the following types are as follows.<\/p>\n<h3 id=\"gf-flutter-sticky-headervertical\">GF Flutter Sticky Header &#8211; Vertical<\/h3>\n<p>GF Sticky Header property <em><code>direction: Axis.vertical<\/code> <\/em>aligns<em> the <\/em><strong>stickyContent<\/strong><em> <\/em>and<em> <\/em>content in a vertical way<em>.<\/em><\/p>\n<h3 id=\"gf-flutter-sticky-headerhorizontal\">GF Flutter Sticky Header &#8211; Horizontal<\/h3>\n<p>GF Sticky Header property <em><code>direction: Axis.horizontal<\/code> <\/em>aligns<em> <\/em>the <strong>stickyContent<\/strong> and content in a horizontal way.<\/p>\n<h3 id=\"flutter-sticky-header-builder\">Flutter Sticky Header Builder<\/h3>\n<p>[GFStickyHeaderBuilder] component works the same as GFStickyHeader, instead of widget for stickyHeader here we can use [builder]. This allows users to customize the sticky header with the render values.<\/p>\n<p>We can use the below code for <strong>Flutter Sticky Header Builder Widget<\/strong>.<\/p>\n<figure class=\"kg-card kg-code-card\">\n<pre><code class=\"language-javascript\">List imageList = ['asset images here'];\n\nListView.builder(\n    itemCount: imageList.length,\n    itemBuilder: (context, index) => GFStickyHeaderBuilder(\n          direction: Axis.horizontal,\n          stickyContentBuilder:\n              (BuildContext context, double stuckValue) {\n            stuckValue = 1.0 - stuckValue.clamp(0.0, 1.0);\n            return Column(\n              children: [\n                Container(\n                  height: 50,\n                  width: MediaQuery.of(context).size.width * 0.5,\n                  color: Color.lerp(Color(0xFF42335d).withOpacity(0.6),\n                      Color(0xFF42335d), stuckValue),\n                  padding: const EdgeInsets.symmetric(horizontal: 16),\n                  alignment: Alignment.centerLeft,\n                  child: Row(\n                    children: <Widget>[\n                      Expanded(\n                        child: Text(\n                          'Product Name $index',\n                          style: const TextStyle(color: Colors.white),\n                        ),\n                      ),\n                    ],\n                  ),\n                ),\n                Container(\n                  \/\/ height: 200,\n                  width: MediaQuery.of(context).size.width * 0.5,\n                  child: ListView.builder(\n                      physics: ScrollPhysics(),\n                      shrinkWrap: true,\n                      scrollDirection: Axis.vertical,\n                      itemCount: 1,\n                      itemBuilder: (BuildContext context, int index) {\n                        return SingleChildScrollView(\n                          child: Container(\n                            padding:\n                                EdgeInsets.symmetric(horizontal: 15),\n                            child: Column(\n                              crossAxisAlignment:\n                                  CrossAxisAlignment.start,\n                              children: [\n                                SizedBox(height: 15),\n                                Row(\n                                  children: [\n                                    GFRadio(\n                                      type: GFRadioType.blunt,\n                                      size: 23,\n                                      value: 1,\n                                      groupValue: groupValue,\n                                      onChanged: (val) {\n                                        setState(() {\n                                          groupValue = val;\n                                        });\n                                      },\n                                      inactiveIcon: null,\n                                      activeBorderColor:\n                                          GFColors.SUCCESS,\n                                      custombgColor: GFColors.SUCCESS,\n                                    ),\n                                    SizedBox(width: 5),\n                                    Text('Large')\n                                  ],\n                                ),\n                                SizedBox(height: 8),\n                                Row(\n                                  children: [\n                                    GFRadio(\n                                      type: GFRadioType.blunt,\n                                      size: 23,\n                                      value: 2,\n                                      groupValue: groupValue,\n                                      onChanged: (val) {\n                                        setState(() {\n                                          groupValue = val;\n                                        });\n                                      },\n                                      inactiveIcon: null,\n                                      activeBorderColor:\n                                          GFColors.SUCCESS,\n                                      custombgColor: GFColors.SUCCESS,\n                                    ),\n                                    SizedBox(width: 5),\n                                    Text('Medium')\n                                  ],\n                                ),\n                                SizedBox(height: 8),\n                                Row(\n                                  children: [\n                                    GFRadio(\n                                      type: GFRadioType.blunt,\n                                      size: 23,\n                                      value: 3,\n                                      groupValue: groupValue,\n                                      onChanged: (val) {\n                                        setState(() {\n                                          groupValue = val;\n                                        });\n                                      },\n                                      inactiveIcon: null,\n                                      activeBorderColor:\n                                          GFColors.SUCCESS,\n                                      custombgColor: GFColors.SUCCESS,\n                                    ),\n                                    SizedBox(width: 5),\n                                    Text('Small')\n                                  ],\n                                ),\n                                 SizedBox(height: 8),\n                                Row(\n                                  children: [\n                                    GFRadio(\n                                      type: GFRadioType.blunt,\n                                      size: 23,\n                                      value: 3,\n                                      groupValue: groupValue,\n                                      onChanged: (val) {\n                                        setState(() {\n                                          groupValue = val;\n                                        });\n                                      },\n                                      inactiveIcon: null,\n                                      activeBorderColor:\n                                          GFColors.SUCCESS,\n                                      custombgColor: GFColors.SUCCESS,\n                                    ),\n                                    SizedBox(width: 5),\n                                    Text('Extra Small')\n                                  ],\n                                ),\n                              ],\n                            ),\n                          ),\n                        );\n                      }),\n                ),\n              ],\n            );\n          },\n          content: Container(\n            height: 200,\n            width: MediaQuery.of(context).size.width * 0.5,\n            color: Colors.teal,\n            child: Image.asset(imageList[index],\n                fit: BoxFit.fill, width: 100, height: 200),\n          ),\n        )),<\/code><\/pre><figcaption>\n<p><span style=\"white-space: pre-wrap;\">Flutter Sticky Header Builder Example Code Snippet<\/span><\/p>\n<\/figcaption><\/figure>\n<h3 id=\"\"><\/h3>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_80 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor:pointer\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #ffffff;color:#ffffff\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #ffffff;color:#ffffff\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.getwidget.dev\/blog\/flutter-sticky-header\/#gf-flutter-stickyheader-custom-properties\" >GF Flutter StickyHeader Custom Properties<\/a><\/li><\/ul><\/nav><\/div>\n<h2 id=\"gf-flutter-stickyheader-custom-properties\"><span class=\"ez-toc-section\" id=\"gf-flutter-stickyheader-custom-properties\"><\/span><strong>GF Flutter StickyHeader<\/strong> Custom Properties<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The look and feel of the <strong>GFStickyHeader<\/strong> can be customized using the <strong>GFStickyHeader<\/strong> properties.<\/p>\n<table style=\"font-family: \"Nunito Sans\", sans-serif; border-collapse: collapse; margin: 1rem 0px; display: block; overflow-x: auto; color: rgb(44, 62, 80); font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;\">\n<thead style=\"font-family: \"Nunito Sans\", sans-serif;\">\n<tr style=\"font-family: \"Nunito Sans\", sans-serif; border-top: 1px solid rgb(223, 226, 229);\">\n<th style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\">Name<\/th>\n<th style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody style=\"font-family: \"Nunito Sans\", sans-serif;\">\n<tr style=\"font-family: \"Nunito Sans\", sans-serif; border-top: 1px solid rgb(223, 226, 229);\">\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\"><strong style=\"font-family: \"Nunito Sans\", sans-serif;\">stickyContent<\/strong><\/td>\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\">widget can be used to define [stickyContent]<\/td>\n<\/tr>\n<tr style=\"font-family: \"Nunito Sans\", sans-serif; border-top: 1px solid rgb(223, 226, 229); background-color: rgb(246, 248, 250);\">\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\"><strong style=\"font-family: \"Nunito Sans\", sans-serif;\">content<\/strong><\/td>\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\">widget can be used to define [content].<\/td>\n<\/tr>\n<tr style=\"font-family: \"Nunito Sans\", sans-serif; border-top: 1px solid rgb(223, 226, 229);\">\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\"><strong style=\"font-family: \"Nunito Sans\", sans-serif;\">enableHeaderOverlap<\/strong><\/td>\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\">\n<p style=\"font-family: \"Nunito Sans\", sans-serif; line-height: 1.7;\">On state true, the [stickyContent] will overlap the [content].<\/p>\n<p style=\"font-family: \"Nunito Sans\", sans-serif; line-height: 1.7;\">Only works when direction is [Axis.vertical]. Default set to false.<\/p>\n<\/td>\n<\/tr>\n<tr style=\"font-family: \"Nunito Sans\", sans-serif; border-top: 1px solid rgb(223, 226, 229); background-color: rgb(246, 248, 250);\">\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\"><strong style=\"font-family: \"Nunito Sans\", sans-serif;\">stickyContentPosition<\/strong><\/td>\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\">\n<p style=\"font-family: \"Nunito Sans\", sans-serif; line-height: 1.7;\">[GFPosition] allows to [stickyContentPosition] to stick at top in [Axis.vertical] and stick at start in [Axis.horizontal]<\/p>\n<p style=\"font-family: \"Nunito Sans\", sans-serif; line-height: 1.7;\">Defaults to [GFPosition.start]<\/p>\n<\/td>\n<\/tr>\n<tr style=\"font-family: \"Nunito Sans\", sans-serif; border-top: 1px solid rgb(223, 226, 229);\">\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\"><strong style=\"font-family: \"Nunito Sans\", sans-serif;\">callback<\/strong><\/td>\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\">Allows to add custom stickyHeader stuck offset value<\/td>\n<\/tr>\n<tr style=\"font-family: \"Nunito Sans\", sans-serif; border-top: 1px solid rgb(223, 226, 229); background-color: rgb(246, 248, 250);\">\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\"><strong style=\"font-family: \"Nunito Sans\", sans-serif;\">direction<\/strong><\/td>\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\">\n<p style=\"font-family: \"Nunito Sans\", sans-serif; line-height: 1.7;\">[direction] allows children to align in vertical \/ horizontal way<\/p>\n<p style=\"font-family: \"Nunito Sans\", sans-serif; line-height: 1.7;\">Defaults to [Axis.vertical]<\/p>\n<\/td>\n<\/tr>\n<tr style=\"font-family: \"Nunito Sans\", sans-serif; border-top: 1px solid rgb(223, 226, 229);\">\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\"><strong style=\"font-family: \"Nunito Sans\", sans-serif;\">stickyContentBuilder<\/strong><\/td>\n<td style=\"font-family: \"Nunito Sans\", sans-serif; border: 1px solid rgb(223, 226, 229); padding: 0.6em 1em; text-align: left;\">builder widget can be used to define [stickyContentBuilder].<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Here we discussed, what <strong>GFStickyHeader<\/strong><em> <\/em>is? And how we can use it in our Flutter app through the <strong>GetWidget<\/strong><em> <\/em>Sticky Header<em> <\/em>widget<em> <\/em>component.<\/p>\n<h3 id=\"what-are-the-customizable-properties-used\">What are the customizable properties used<\/h3>\n<p>The customizable properties include the stickyContent <strong>, <\/strong>content <strong>, <\/strong>enableHeaderOverlap , stickyContentPosition , callback <strong>, <\/strong>direction &#038; stickyContentBuilder of Sticky Header component . Hence customizable properties are full flexible. You can check out all custom properties on <a href=\"https:\/\/docs.getwidget.dev\/gf-sticky-header\/\" target=\"_blank\" rel=\"noopener\"><strong>GetWidget Sticky Header Widget<\/strong> Properties<\/a>.<\/p>\n<h3 id=\"can-we-set-the-position-of-stickycontent\">Can we set the position of stickyContent <\/h3>\n<p>Yes, we can set the position of stickyContent . By default, it is [GFPosition.start] ie, at the starting point of the screen. <\/p>\n<p><a href=\"https:\/\/docs.getwidget.dev\/\" target=\"_blank\" rel=\"noopener\"><strong>Flutter Get Widget Docs<\/strong><\/a><\/p>\n<figure class=\"kg-card kg-bookmark-card\"><a class=\"kg-bookmark-container\" href=\"https:\/\/docs.getwidget.dev\/\" target=\"_blank\" rel=\"noopener\"><\/p>\n<div class=\"kg-bookmark-content\">\n<div class=\"kg-bookmark-title\">Flutter GetWidget Docs<\/div>\n<div class=\"kg-bookmark-description\">Get Widget is one of the largest Flutter open-source UI Kit libraries for mobile or web apps. It has more than 1000+ pre-built reusable widgets.<\/div>\n<div class=\"kg-bookmark-metadata\"><img decoding=\"async\" class=\"kg-bookmark-icon lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/ik.imagekit.io\/ionicfirebaseapp\/favicon_QkjfdlGz1.png\" alt=\"\"><noscript><img decoding=\"async\" class=\"kg-bookmark-icon lazyload\" src=\"https:\/\/ik.imagekit.io\/ionicfirebaseapp\/favicon_QkjfdlGz1.png\" alt=\"\"><\/noscript><span class=\"kg-bookmark-author\">getwidget<\/span><span class=\"kg-bookmark-publisher\">getwidget<\/span><\/div>\n<\/div>\n<div class=\"kg-bookmark-thumbnail\"><img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/ik.imagekit.io\/ionicfirebaseapp\/docs\/tr:dpr-auto,tr:w-auto\/link-share_aT-cHzGY9.png\" alt=\"\"><noscript><img decoding=\"async\" class=\"lazyload\" src=\"https:\/\/ik.imagekit.io\/ionicfirebaseapp\/docs\/tr:dpr-auto,tr:w-auto\/link-share_aT-cHzGY9.png\" alt=\"\"><\/noscript><\/div>\n<p><\/a><\/figure>\n<p><a href=\"https:\/\/github.com\/ionicfirebaseapp\/getwidget\/\" target=\"_blank\" rel=\"noopener\"><strong>GitHub Repository<\/strong><\/a>: <\/p>\n<p>Please do appreciate our work through Github start<\/p>\n<h3 id=\"conclusion\">Conclusion:<\/h3>\n<p>Here we discuss, what <a href=\"https:\/\/docs.getwidget.dev\/gf-sticky-header\/\" target=\"_blank\" rel=\"noopener\"><strong>Flutter StickyHeader<\/strong><\/a> Widget is? And how we can use and implement it into our Flutter app through the <strong>GetWidget<\/strong> <strong>StickyHeader<\/strong> component. Here, there are options to customize the <strong>StickyHeader<\/strong> widget.<\/p>\n<h3 id=\"about-our-team\">About Our Team:<\/h3>\n<p>We have been working on Flutter since Flutter launched in beta version in 2017. And our team have been putting hundreds and hundreds of hour to the experiment and implementation of Flutter. As well as after the successful delivery of enterprise and SAAS applications that have been used by more than 500+ businesses around the 119+ countries. Now we are in love with Flutter development and we are very passionate about Flutter development. Now it is something we are trying to give a small contribution to the <a href=\"https:\/\/www.getwidget.dev\/\" rel=\"noreferrer\">Flutter Dev Community<\/a>. If you need assistance for your next app development project you can <a href=\"https:\/\/www.getwidget.dev\/hire-flutter-developer\"><strong>hire flutter developer<\/strong><\/a> from the <strong>GetWidget<\/strong> team<\/p>\n","protected":false},"excerpt":{"rendered":"Flutter Sticky header is also called fixed header. It is a smart navigation tool by using which can&hellip;","protected":false},"author":1,"featured_media":5220,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_display_header_overlay":false,"csco_singular_sidebar":"","csco_page_header_type":"","footnotes":""},"categories":[139],"tags":[],"class_list":{"0":"post-7375","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-flutter","8":"cs-entry"},"_links":{"self":[{"href":"https:\/\/www.getwidget.dev\/blog\/wp-json\/wp\/v2\/posts\/7375","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.getwidget.dev\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.getwidget.dev\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.getwidget.dev\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.getwidget.dev\/blog\/wp-json\/wp\/v2\/comments?post=7375"}],"version-history":[{"count":2,"href":"https:\/\/www.getwidget.dev\/blog\/wp-json\/wp\/v2\/posts\/7375\/revisions"}],"predecessor-version":[{"id":8449,"href":"https:\/\/www.getwidget.dev\/blog\/wp-json\/wp\/v2\/posts\/7375\/revisions\/8449"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.getwidget.dev\/blog\/wp-json\/wp\/v2\/media\/5220"}],"wp:attachment":[{"href":"https:\/\/www.getwidget.dev\/blog\/wp-json\/wp\/v2\/media?parent=7375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.getwidget.dev\/blog\/wp-json\/wp\/v2\/categories?post=7375"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.getwidget.dev\/blog\/wp-json\/wp\/v2\/tags?post=7375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}