{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/hONPuWcESHogkRqaa54l/0fBTc49P02qcS0ea1RxM/dlsksZJDV-14.js"],
  "sourcesContent": ["import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{ComponentPresetsConsumer as n,Link as r}from\"framer\";import{motion as i}from\"framer-motion\";import*as o from\"react\";import{Youtube as a}from\"https://framerusercontent.com/modules/NEd4VmDdsxM3StIUbddO/5RntGP0I11dGShtzMldK/YouTube.js\";import l from\"https://framerusercontent.com/modules/pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js\";export const richText=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"In Flutter, slivers are a powerful tool for achieving fancy scrolling effects. By utilizing slivers, you can customize the behavior of specific portions of a scrollable area, allowing for elastic scrolling and other dynamic effects.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/5RntGP0I11dGShtzMldK/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(a,{...t,borderRadius:0,bottomLeftRadius:0,bottomRightRadius:0,isMixedBorderRadius:!1,isRed:!0,play:\"Loop\",shouldMute:!0,thumbnail:\"Medium Quality\",topLeftRadius:0,topRightRadius:0,url:\"https://youtu.be/YY-_yrZdjGc\"})})}),/*#__PURE__*/e(\"p\",{children:\"Here's how you can use slivers to achieve fancy scrolling:\"}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Create a CustomScrollView\"}),\": Start by setting up a CustomScrollView widget.\"]})}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Add a Floating App Bar with SliverAppBar\"}),\": Incorporate a floating app bar using SliverAppBar.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/5RntGP0I11dGShtzMldK/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(a,{...t,borderRadius:0,bottomLeftRadius:0,bottomRightRadius:0,isMixedBorderRadius:!1,isRed:!0,play:\"Loop\",shouldMute:!0,thumbnail:\"Medium Quality\",topLeftRadius:0,topRightRadius:0,url:\"https://youtu.be/R9C5KMJKluE\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Incorporate a List with SliverList\"}),\": Use SliverList to add a scrollable list of items.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/5RntGP0I11dGShtzMldK/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(a,{...t,borderRadius:0,bottomLeftRadius:0,bottomRightRadius:0,isMixedBorderRadius:!1,isRed:!0,play:\"Loop\",shouldMute:!0,thumbnail:\"Medium Quality\",topLeftRadius:0,topRightRadius:0,url:\"https://youtu.be/ORiTTaVY6mM\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]})]}),/*#__PURE__*/e(\"p\",{children:\"Explore these concepts in action with an interactive example.\"}),/*#__PURE__*/e(\"h3\",{children:\"Resources\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(r,{href:\"https://medium.com/flutter/slivers-demystified-6ff68ab0296f\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:/*#__PURE__*/e(\"strong\",{children:\"Slivers Demystified\"})})}),\": Learn from a free Medium article on implementing custom scrolling.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Watch brief overviews of \",/*#__PURE__*/e(r,{href:\"https://www.youtube.com/watch?v=R9C5KMJKluE\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"SliverAppBar\"})}),\", \\xa0\",/*#__PURE__*/e(\"code\",{children:\"SliverList\"}),\"\\xa0and\\xa0\",/*#__PURE__*/e(\"code\",{children:\"SliverGrid\"}),\"\\xa0widgets.\"]})}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(r,{href:\"https://www.youtube.com/playlist?list=PLOU2XLYxmsIK0r_D-zWcmJ1plIcDNnRkK\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:/*#__PURE__*/e(\"strong\",{children:\"The Boring Show\"})})}),\": Delve deeper into slivers with discussions on \",/*#__PURE__*/e(r,{href:\"https://www.youtube.com/watch?v=Mz3kHQxBjGg\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"dynamic layouts\"})}),\".\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/5RntGP0I11dGShtzMldK/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(a,{...t,borderRadius:0,bottomLeftRadius:0,bottomRightRadius:0,isMixedBorderRadius:!1,isRed:!0,play:\"Loop\",shouldMute:!0,thumbnail:\"Medium Quality\",topLeftRadius:0,topRightRadius:0,url:\"https://youtu.be/Mz3kHQxBjGg\"})})})]})]}),/*#__PURE__*/e(\"h3\",{children:\"API docs\"}),/*#__PURE__*/e(\"p\",{children:\"Refer to API docs for detailed information on available sliver APIs.\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(33, 33, 33)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/CustomScrollView-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"CustomScrollView\"})})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/SliverAppBar-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"SliverAppBar\"})})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/SliverGrid-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"SliverGrid\"})})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/SliverList-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"SliverList\"})})})})})]})]});export const richText1=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"h3\",{children:\"Improve User Experience with Floating App Bar\"}),/*#__PURE__*/t(\"p\",{children:[\"Easily hide the app bar as users scroll down your list of items. By moving the app bar into a \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/CustomScrollView-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"CustomScrollView\"})}),\", you create a floating app bar that disappears as users scroll.\"]}),/*#__PURE__*/e(\"p\",{children:\"Follow these steps:\"}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Create a\\xa0\",/*#__PURE__*/e(\"code\",{children:\"CustomScrollView\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Add a floating app bar using\\xa0\",/*#__PURE__*/e(\"code\",{children:\"SliverAppBar.\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Populate the list with \",/*#__PURE__*/e(\"code\",{children:\"SliverList\"}),\".\"]})})]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"Scaffold(\\n  body: CustomScrollView(\\n    slivers: [\\n      const SliverAppBar(\\n        title: Text(title),\\n        floating: true,\\n        flexibleSpace: Placeholder(),\\n        expandedHeight: 200,\\n      ),\\n      SliverList(\\n        delegate: SliverChildBuilderDelegate(\\n          (context, index) => ListTile(title: Text('Item #$index')),\\n          childCount: 1000,\\n        ),\\n      ),\\n    ],\\n  ),\\n)\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:\"Enhance your app's usability with this simple recipe!\"}),/*#__PURE__*/e(\"ol\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"h4\",children:/*#__PURE__*/t(\"h4\",{children:[\"Create a\\xa0\",/*#__PURE__*/e(\"code\",{children:\"CustomScrollView\"})]})})}),/*#__PURE__*/t(\"p\",{children:[\"To implement a floating app bar, nest it within a\\xa0\",/*#__PURE__*/e(\"code\",{children:\"CustomScrollView\"}),\" along with your list of items. This setup ensures synchronized scrolling between the app bar and the list. The\\xa0\",/*#__PURE__*/e(\"code\",{children:\"CustomScrollView\"}),\" acts like a\\xa0\",/*#__PURE__*/e(\"code\",{children:\"ListView\"}),\", allowing various scrollable elements called slivers.\"]}),/*#__PURE__*/t(\"p\",{children:[\"These slivers, like \\xa0\",/*#__PURE__*/e(\"code\",{children:\"SliverList\"}),\",\\xa0\",/*#__PURE__*/e(\"code\",{children:\"SliverGrid\"}),\", and\\xa0\",/*#__PURE__*/e(\"code\",{children:\"SliverAppBar\"}),\", define the scrollable components. \"]}),/*#__PURE__*/t(\"p\",{children:[\"For this example, construct a\\xa0\",/*#__PURE__*/e(\"code\",{children:\"CustomScrollView\"}),\" containing a\\xa0\",/*#__PURE__*/e(\"code\",{children:\"SliverAppBar\"}),\"\\xa0and a\\xa0\",/*#__PURE__*/e(\"code\",{children:\"SliverList\"}),\", removing any existing app bars from the \",/*#__PURE__*/e(\"code\",{children:\"Scaffold\"}),\"\\xa0widget.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"Scaffold(\\n  // No appBar property provided, only the body.\\n  body: CustomScrollView(\\n  // Add the app bar and list of items as slivers in the next steps.\\n      slivers: <Widget>[]),\\n);\",language:\"JSX\"})})}),/*#__PURE__*/e(\"ol\",{start:\"2\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"h4\",children:/*#__PURE__*/e(\"h4\",{children:\"Adding a Floating App Bar with SliverAppBar\"})})}),/*#__PURE__*/t(\"p\",{children:[\"Integrate an app bar into the \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/CustomScrollView-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"CustomScrollView\"})}),\" using \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/SliverAppBar-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"SliverAppBar\"})}),\". Similar to \",/*#__PURE__*/e(\"code\",{children:\"AppBar\"}),\", \",/*#__PURE__*/e(\"code\",{children:\"SliverAppBar\"}),\"\\xa0offers diverse features such as floating behavior and shrinkability. \"]}),/*#__PURE__*/t(\"p\",{children:[\"Create a floating effect by setting the \",/*#__PURE__*/e(\"code\",{children:\"floating\"}),\"\\xa0property to\\xa0\",/*#__PURE__*/e(\"code\",{children:\"true\"}),\", allow users to reveal the app bar by scrolling up. \"]}),/*#__PURE__*/t(\"p\",{children:[\"Customize the appearance with a\\xa0\",/*#__PURE__*/e(\"code\",{children:\"flexibleSpace\"}),\" widget for \",/*#__PURE__*/e(\"code\",{children:\"expandedHeight\"}),\".\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"CustomScrollView(\\n  slivers: [\\n  // Add the app bar to the CustomScrollView.\\n    const SliverAppBar(\\n  // Provide a standard title.\\n      title: Text(title),\\n   // Allows the user to reveal the app bar if they begin scrolling\\n  // Back up the list of items.\\n      floating: true,\\n   // Display a placeholder widget to visualize the shrinking size.\\n      flexibleSpace: Placeholder(),\\n  // Make the initial height of the SliverAppBar larger than normal.\\n      expandedHeight: 200,\\n    ),\\n  ],\\n)\",language:\"JSX\"})})}),/*#__PURE__*/e(\"ol\",{start:\"3\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"h4\",children:/*#__PURE__*/e(\"h4\",{children:\"Adding a List of Items with SliverList\"})})}),/*#__PURE__*/t(\"p\",{children:[\"After setting up the app bar, include a list of items within the\\xa0\",/*#__PURE__*/e(\"code\",{children:\"CustomScrollView\"}),\". Choose between \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/SliverList-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"SliverList\"})}),\" or \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/SliverGrid-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"SliverGrid\"})}),\" based on your layout needs. Utilize the \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/SliverChildDelegate-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"SliverChildDelegate\"})}),\" to provide widgets for the list. Use \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/SliverChildBuilderDelegate-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"SliverChildBuilderDelegate \"})}),\"for lazy loading, similar to \",/*#__PURE__*/e(\"code\",{children:\"ListView.builder\"}),\"\\xa0widget.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"// Next, create a SliverList\\nSliverList(\\n  // Use a delegate to build items as they're scrolled on screen.\\n  delegate: SliverChildBuilderDelegate(\\n    // The builder function returns a ListTile with a title that\\n    // displays the index of the current item.\\n    (context, index) => ListTile(title: Text('Item #$index')),\\n    // Builds 1000 ListTiles\\n    childCount: 1000,\\n  ),\\n)\",language:\"JSX\"})})})]});export const richText2=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"h3\",{children:\"Creating a Scrolling Parallax Effect\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"100\",src:\"https://framerusercontent.com/images/1HMrNFKUjIZVavFeSpPsybO4aSM.gif\",style:{aspectRatio:\"400 / 200\"},width:\"200\"}),/*#__PURE__*/e(\"p\",{children:\"Scrolling parallax effects add depth and visual interest to a list of items by making images appear to move at a different speed than the rest of the content as the user scrolls. Let's break down how to implement this effect in Flutter:\"}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h4\",children:[/*#__PURE__*/e(\"h4\",{children:\"Create a list to hold the parallax items:\"}),/*#__PURE__*/t(\"p\",{children:[\"Begin by creating a new stateless widget, let's call it \",/*#__PURE__*/e(\"code\",{children:\"ParallaxRecipe\"}),\". Inside this widget, set up \\xa0\",/*#__PURE__*/e(\"code\",{children:\"SingleChildScrollView\"}),\"\\xa0with a\\xa0\",/*#__PURE__*/e(\"code\",{children:\"Column\"}),\". This structure forms the foundation of your list.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"class ParallaxRecipe extends StatelessWidget {\\n  const ParallaxRecipe({super.key});\\n\\n  @override\\n  Widget build(BuildContext context) {\\n    return const SingleChildScrollView(\\n      child: Column(\\n        children: [],\\n      ),\\n    );\\n  }\\n}\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:\"Each item in the list will be represented by a card containing an image and some text. These items will be stacked vertically within the SingleChildScrollView.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h4\",children:[/*#__PURE__*/e(\"h4\",{children:\"Display items with text and a static image:\"}),/*#__PURE__*/t(\"p\",{children:[\"Define a new stateless widget called \",/*#__PURE__*/e(\"code\",{children:\"LocationListItem\"}),\". This widget will represent each item in the list.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"@immutable\\nclass LocationListItem extends StatelessWidget {\\n  const LocationListItem({\\n    super.key,\\n    required this.imageUrl,\\n    required this.name,\\n    required this.country,\\n  });\\n\\n  final String imageUrl;\\n  final String name;\\n  final String country;\\n\\n  @override\\n  Widget build(BuildContext context) {\\n    return Padding(\\n      padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),\\n      child: AspectRatio(\\n        aspectRatio: 16 / 9,\\n        child: ClipRRect(\\n          borderRadius: BorderRadius.circular(16),\\n          child: Stack(\\n            children: [\\n              _buildParallaxBackground(context),\\n              _buildGradient(),\\n              _buildTitleAndSubtitle(),\\n            ],\\n          ),\\n        ),\\n      ),\\n    );\\n  }\\n\\n  Widget _buildParallaxBackground(BuildContext context) {\\n    return Positioned.fill(\\n      child: Image.network(\\n        imageUrl,\\n        fit: BoxFit.cover,\\n      ),\\n    );\\n  }\\n\\n  Widget _buildGradient() {\\n    return Positioned.fill(\\n      child: DecoratedBox(\\n        decoration: BoxDecoration(\\n          gradient: LinearGradient(\\n            colors: [Colors.transparent, Colors.black.withOpacity(0.7)],\\n            begin: Alignment.topCenter,\\n            end: Alignment.bottomCenter,\\n            stops: const [0.6, 0.95],\\n          ),\\n        ),\\n      ),\\n    );\\n  }\\n\\n  Widget _buildTitleAndSubtitle() {\\n    return Positioned(\\n      left: 20,\\n      bottom: 20,\\n      child: Column(\\n        mainAxisSize: MainAxisSize.min,\\n        crossAxisAlignment: CrossAxisAlignment.start,\\n        children: [\\n          Text(\\n            name,\\n            style: const TextStyle(\\n              color: Colors.white,\\n              fontSize: 20,\\n              fontWeight: FontWeight.bold,\\n            ),\\n          ),\\n          Text(\\n            country,\\n            style: const TextStyle(\\n              color: Colors.white,\\n              fontSize: 14,\\n            ),\\n          ),\\n        ],\\n      ),\\n    );\\n  }\\n}\",language:\"JSX\"})})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Each \",/*#__PURE__*/e(\"code\",{children:\"LocationListItem\"}),\" will display a rounded-rectangle background image, representing a location, overlaid with the name and country of that location.\"]})}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:\"Initially, use a static Image widget for the background. Later, this will be replaced with a dynamic parallax version.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"class ParallaxRecipe extends StatelessWidget {\\n  const ParallaxRecipe({super.key});\\n\\n  @override\\n  Widget build(BuildContext context) {\\n    return SingleChildScrollView(\\n      child: Column(\\n        children: [\\n          for (final location in locations)\\n            LocationListItem(\\n              imageUrl: location.imageUrl,\\n              name: location.name,\\n              country: location.place,\\n            ),\\n        ],\\n      ),\\n    );\\n  }\\n}\",language:\"JSX\"})})})]})]}),/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"h4\",children:/*#__PURE__*/e(\"h4\",{children:\"Implement the parallax effect:\"})})]}),/*#__PURE__*/e(\"p\",{children:\"A parallax scrolling effect adds depth and visual interest to a list by moving background images at a different speed than the rest of the content as the user scrolls. Here's how to implement it in Flutter:\"}),/*#__PURE__*/t(\"ol\",{style:{\"--list-style-type\":\"lower-alpha\"},children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Understanding Parallax Effect:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Parallax effect involves moving background images opposite to the scroll direction. As list items move up, background images move down, creating a visually appealing effect.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Achieving this effect requires knowing the position of list items within the Scrollable widget. However, this information isn't available until after the layout phase. Flutter's Flow widget allows us to control widget transformations before painting, solving this problem.\"})})]})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Wrap Background Image with Flow:\"})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:\"Wrap the background Image widget with a Flow widget. This provides control over the transformation of the background image before painting.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"Widget _buildParallaxBackground(BuildContext context) {\\n  return Flow(\\n    children: [\\n      Image.network(\\n        imageUrl,\\n        fit: BoxFit.cover,\\n      ),\\n    ],\\n  );\\n}\",language:\"JSX\"})})})]})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\" Introduce ParallaxFlowDelegate:\"})}),/*#__PURE__*/e(\"p\",{children:\"Create a new class called ParallaxFlowDelegate, which extends FlowDelegate. This delegate will handle the layout and painting of the background image.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"class ParallaxFlowDelegate extends FlowDelegate {\\n  ParallaxFlowDelegate();\\n\\n  @override\\n  BoxConstraints getConstraintsForChild(int i, BoxConstraints constraints) {\\n    // To be implemented.\\n  }\\n  @override\\n  void paintChildren(FlowPaintingContext context) {\\n    // To be implemented.\\n  }\\n  @override\\n  bool shouldRepaint(covariant FlowDelegate oldDelegate) {\\n    // To be implemented.\\n    return true;\\n  }\\n}\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Control Child Sizing:\"})}),/*#__PURE__*/e(\"p\",{children:\"In the ParallaxFlowDelegate, specify tight width constraints for the background image child. This ensures the image is sized exactly as wide as the Flow widget.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"@override\\nBoxConstraints getConstraintsForChild(int i, BoxConstraints constraints) {\\n  return BoxConstraints.tightFor(\\n    width: constraints.maxWidth,\\n  );\\n}\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]})]}),/*#__PURE__*/e(\"p\",{children:\"To create a parallax scrolling effect, you need to calculate the vertical position of each background image based on its scroll position and paint it accordingly. Here's how to achieve this in Flutter:\"}),/*#__PURE__*/t(\"ol\",{style:{\"--list-style-type\":\"lower-alpha\"},children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Get Necessary Information:\"})}),/*#__PURE__*/e(\"p\",{children:\"You need three critical pieces of information: the bounds of the ancestor Scrollable, the bounds of the individual list item, and the size of the background image after scaling.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Wrap Background Image with Flow:\"})}),/*#__PURE__*/e(\"p\",{children:\"Wrap the background Image widget with a Flow widget to control its transformation before painting.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"Widget _buildParallaxBackground(BuildContext context) {\\n  return Flow(\\n    delegate: ParallaxFlowDelegate(),\\n    children: [\\n      Image.network(\\n        imageUrl,\\n        fit: BoxFit.cover,\\n      ),\\n    ],\\n  );\\n}\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Introduce ParallaxFlowDelegate:\"})}),/*#__PURE__*/e(\"p\",{children:\"Create a ParallaxFlowDelegate class that extends FlowDelegate to handle layout and painting of the background image.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"class ParallaxFlowDelegate extends FlowDelegate {\\n  ParallaxFlowDelegate({\\n    required this.scrollable,\\n    required this.listItemContext,\\n    required this.backgroundImageKey,\\n  });\\n\\n  final ScrollableState scrollable;\\n  final BuildContext listItemContext;\\n  final GlobalKey backgroundImageKey;\\n}\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Implement shouldRepaint Method:\"})}),/*#__PURE__*/e(\"p\",{children:\"Implement the shouldRepaint method to repaint the delegate when necessary information changes.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"@override\\nbool shouldRepaint(ParallaxFlowDelegate oldDelegate) {\\n  return scrollable != oldDelegate.scrollable ||\\n      listItemContext != oldDelegate.listItemContext ||\\n      backgroundImageKey != oldDelegate.backgroundImageKey;\\n}\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Calculate Layout:\"})}),/*#__PURE__*/e(\"p\",{children:\"Calculate the pixel position of the list item within its ancestor Scrollable and the percentage position within the scrollable area.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"@override\\nvoid paintChildren(FlowPaintingContext context) {\\n  final scrollableBox = scrollable.context.findRenderObject() as RenderBox;\\n  final listItemBox = listItemContext.findRenderObject() as RenderBox;\\n  final listItemOffset = listItemBox.localToGlobal(\\n      listItemBox.size.centerLeft(Offset.zero),\\n      ancestor: scrollableBox);\\n\\n  final viewportDimension = scrollable.position.viewportDimension;\\n  final scrollFraction =\\n      (listItemOffset.dy / viewportDimension).clamp(0.0, 1.0);\\n}\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Calculate Alignment:\"})}),/*#__PURE__*/e(\"p\",{children:\"Use the scroll percentage to calculate the vertical alignment of the background image.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"final verticalAlignment = Alignment(0.0, scrollFraction * 2 - 1);\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Calculate Child Rectangle:\"})}),/*#__PURE__*/e(\"p\",{children:\"Use the vertical alignment, list item size, and background image size to produce a rectangle for positioning the background image.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"final backgroundSize =\\n      (backgroundImageKey.currentContext!.findRenderObject() as RenderBox)\\n          .size;\\nfinal listItemSize = context.size;\\nfinal childRect =\\n      verticalAlignment.inscribe(backgroundSize, Offset.zero & listItemSize);\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Paint Background Image:\"})}),/*#__PURE__*/e(\"p\",{children:\"Paint the background image with the desired translation transformation to achieve the parallax effect.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"context.paintChild(\\n  0,\\n  transform:\\n      Transform.translate(offset: Offset(0.0, childRect.top)).transform,\\n);\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Ensure Repainting:\"})}),/*#__PURE__*/e(\"p\",{children:\"Pass the ScrollableState's ScrollPosition to the FlowDelegate superclass to ensure repainting when the scroll position changes.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"ParallaxFlowDelegate({\\n    required this.scrollable,\\n    required this.listItemContext,\\n    required this.backgroundImageKey,\\n  }) : super(repaint: scrollable.position);\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"You've successfully implemented parallax scrolling background images for your list of cards.\"})]})]})]});export const richText3=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Blup Tool is a powerful platform tailored for shipping industry app development, offering a user-friendly interface and robust capabilities.\"}),/*#__PURE__*/t(\"h4\",{children:[/*#__PURE__*/e(r,{href:\"https://www.blup.in/downloads\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Start Building with Blup\"})}),\" - Blup's Role in App Development\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"702\",src:\"https://framerusercontent.com/images/jGR0mNX1vi6IWrZPWFvUnvHVapk.png\",srcSet:\"https://framerusercontent.com/images/jGR0mNX1vi6IWrZPWFvUnvHVapk.png?scale-down-to=512 512w,https://framerusercontent.com/images/jGR0mNX1vi6IWrZPWFvUnvHVapk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/jGR0mNX1vi6IWrZPWFvUnvHVapk.png 2048w\",style:{aspectRatio:\"2048 / 1405\"},width:\"1024\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"User-Friendly Interface\"}),\": Blup's intuitive interface makes it easy for users of all experience levels to create functional and visually appealing apps.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Built on Flutter\"}),\": As a Flutter-based tool, Blup offers exceptional flexibility, allowing developers to create apps that work seamlessly across both iOS and Android platforms using a single codebase.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Speedy Prototyping\"}),\": Blup supports rapid prototyping, allowing businesses to quickly develop, test, and refine their app ideas in real-world scenarios. This is particularly valuable in the fast-paced shipping industry, where market demands can shift rapidly.\"]})]});export const richText4=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Explore Flutter development with Blup's comprehensive Flutter Learning Roadmap Series. Whether you're new or experienced, Blup provides valuable resources to enhance your skills.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Previous Blogs\"}),': Check out \"Mastering Gestures in Flutter: Taps, Drags, multi-touch gestures, Gesture Detector and More\" and other blogs in the series.']}),/*#__PURE__*/e(\"p\",{children:\"Here are some reference links for the keywords and widgets used:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Scrollable Widgets\"}),\":\"]}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/SingleChildScrollView-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"SingleChildScrollView\"})})}),\" - A widget that allows its child to be vertically scrollable.\"]})})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/Scrollable/of.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Scrollable.of(context)\"})})}),\" - Retrieves the closest \",/*#__PURE__*/e(\"code\",{children:\"Scrollable\"}),\" ancestor's state in the widget tree, providing access to its properties.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/ScrollPosition-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"scrollable.position\"})})}),\" - Refers to the position of the scrollable widget, which contains information about the current scrolling state.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Flow Delegate and Scroll Effects\"}),\":\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/Flow-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Flow\"})})}),\" - A widget that arranges its children in a flow pattern, and is used here to create the parallax background effect.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/rendering/FlowDelegate-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"FlowDelegate\"})})}),\" - A delegate for managing flow layouts; in this context, it manages the parallax scrolling effect.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://medium.com/nerd-for-tech/parallax-scroll-effect-in-flutter-elevate-your-apps-user-experience-11a71b08a914\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"ParallaxFlowDelegate\"})})}),\" - A custom flow delegate for implementing parallax effects while scrolling.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://medium.com/canadivs-technology-and-design/parallax-effect-in-flutter-67bcd393244f\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Parallax\"})})}),\" - Custom widget for creating parallax effects, often used with scrollable widgets to create dynamic visuals during scrolling.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Scrollable State and Context\"}),\":\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/ScrollableState-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"ScrollableState\"})})}),\" - Represents the state of a \",/*#__PURE__*/e(\"code\",{children:\"Scrollable\"}),\" widget, providing access to the scroll position and other properties.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/ListView-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"listItemContext\"})})}),\" - The context of the list item, used for calculating positions and offsets about the scrollable widget.\"]})})]}),/*#__PURE__*/e(\"p\",{children:'For more information, refer to the \"Retrieve the value of a text field\" recipe.'}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Resources\"}),\":\"]}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Blup \u2014 Flutter Learning Roadmap\"}),\": Follow Blup's learning roadmap.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Flutter Community\"}),\": Join the community for support.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Stack Overflow\"}),\": Find and answer Flutter questions.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"r/FlutterDev on Reddit\"}),\": Participate in Flutter discussions.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Flutter Discord Channel\"}),\": Join for real-time conversations.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"GitHub\"}),\": Explore the Flutter GitHub repository.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Medium\"}),\": Read Flutter-related articles and tutorials.\"]})})]})]});export const richText5=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"In this comprehensive guide, you've learned how to implement a captivating scrolling parallax effect in your Flutter app. By combining Flutter's powerful widgets like SingleChildScrollView, Column, and Flow, you've achieved a dynamic UI with depth and visual interest. Whether you're building a travel app showcasing exotic locations or an e-commerce platform highlighting products, the parallax effect adds a touch of elegance and sophistication. Now, armed with this knowledge, unleash your creativity and take your Flutter apps to new heights!\"}),/*#__PURE__*/e(\"h3\",{children:\"Flutter Learning Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Explore our Flutter Learning Series for more in-depth tutorials, tips, and tricks to master Flutter app development. Dive into a world of endless possibilities and take your skills to the next level. Start your journey today and unlock the full potential of Flutter!\"})]});export const richText6=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Welcome to the ultimate guide on building forms with validation in Flutter! In this blog, we'll delve into the intricacies of creating interactive and user-friendly forms using Flutter's powerful features. Before we dive in, let's explore some fascinating facts about Flutter:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Flutter is an open-source UI software development kit created by Google.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"It allows developers to build natively compiled applications for mobile, web, and desktop from a single codebase.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Flutter provides a rich set of widgets and tools for creating beautiful and responsive user interfaces.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Now, let's address \",/*#__PURE__*/e(\"strong\",{children:\"some commonly asked questions\"}),\" about building forms with validation in Flutter:\"]}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How can I create text fields in Flutter and validate user input?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What techniques can I use to manage focus in text fields?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Is there a way to ensure data integrity and validate forms before submission?\"})})]}),/*#__PURE__*/e(\"p\",{children:\"This blog is part of Blup's Flutter Learning Roadmap Series, focusing on mastering various aspects of Flutter development. Our previous topic covered gestures in Flutter, exploring how to incorporate touch interactions into your Flutter apps.\"})]});export const richText7=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"405\",src:\"https://framerusercontent.com/images/2aG03ZOcGSoreammccKxtFKTJ8.png\",srcSet:\"https://framerusercontent.com/images/2aG03ZOcGSoreammccKxtFKTJ8.png?scale-down-to=512 512w,https://framerusercontent.com/images/2aG03ZOcGSoreammccKxtFKTJ8.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/2aG03ZOcGSoreammccKxtFKTJ8.png 1920w\",style:{aspectRatio:\"1920 / 810\"},width:\"960\"}),/*#__PURE__*/e(\"p\",{children:\"Empower your Flutter app with text fields for seamless user interaction. Text fields serve various purposes like form input, messaging, and search functionalities. \"}),/*#__PURE__*/t(\"p\",{children:[\"Let's explore two essential text field widgets provided by Flutter: \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/TextField-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"TextField\"})}),\" and \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/TextFormField-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"TextFormField\"})}),\".\"]}),/*#__PURE__*/e(\"h3\",{children:\"TextField\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/TextField-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"TextField\"})})}),\" is the most commonly used text input widget.\"]}),/*#__PURE__*/t(\"p\",{children:[\"TextField is the go-to choice for text input. By default, it features an underlined decoration. Customize it further by adding labels, icons, hint text, and error messages through the \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/InputDecoration-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"InputDecoration\"})}),\" property. For a clean look, you can remove the \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/TextField/decoration.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"decoration\"})}),\" entirely.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"TextField(\\n  decoration: InputDecoration(\\n    border: OutlineInputBorder(),\\n    hintText: 'Enter a search term',\\n  ),\\n),\",language:\"JSX\"})})}),/*#__PURE__*/t(\"p\",{children:[\"To retrieve the value when it changes, see the \",/*#__PURE__*/e(r,{href:\"https://docs.flutter.dev/cookbook/forms/text-field-changes/\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Handle changes to a text field\"})}),\" recipe.\"]}),/*#__PURE__*/e(\"h3\",{children:\"TextFormField\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/TextFormField-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"TextFormField \"})}),\"extends \",/*#__PURE__*/e(\"code\",{children:\"TextField\"}),\" and seamlessly integrates with \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/Form-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"forms\"})}),\". It offers advanced features like validation and coordination with other \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/FormField-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"FormField\"})}),\" widgets.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"TextFormField(\\n  decoration: InputDecoration(\\n    border: UnderlineInputBorder(),\\n    labelText: 'Enter your username',\\n  ),\\n)\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:\"Experience the power of text fields in your Flutter app, enhancing user engagement and interaction.\"}),/*#__PURE__*/e(\"h3\",{children:\"Interactive example\"})]});export const richText8=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"405\",src:\"https://framerusercontent.com/images/vUYXTM265T1K7lEjZ8PHSjvdo.gif\",srcSet:\"https://framerusercontent.com/images/vUYXTM265T1K7lEjZ8PHSjvdo.gif?scale-down-to=512 512w,https://framerusercontent.com/images/vUYXTM265T1K7lEjZ8PHSjvdo.gif?scale-down-to=1024 1024w,https://framerusercontent.com/images/vUYXTM265T1K7lEjZ8PHSjvdo.gif 1920w\",style:{aspectRatio:\"1920 / 810\"},width:\"960\"}),/*#__PURE__*/e(\"p\",{children:\"Text fields in Flutter serve as gateways for user input, facilitating various interactions within your app. In this guide, we'll walk through the process of retrieving user-entered text from text fields in a Flutter app, step by step.\"}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(33, 33, 33)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Create a \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Supply the \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"}),\" to a \",/*#__PURE__*/e(\"code\",{children:\"TextField\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Display the current value of the text field.\"})})]}),/*#__PURE__*/t(\"h3\",{children:[\"Create a \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"})]}),/*#__PURE__*/t(\"p\",{children:[\"To retrieve text entered by the user, start by creating a \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/TextEditingController-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"TextEditingController\"})}),\". This controller acts as a mediator between the text field and your app, allowing you to access the entered text.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"// Define a custom Form widget.\\nclass MyCustomForm extends StatefulWidget {\\n  const MyCustomForm({super.key});\\n\\n  @override\\n  State<MyCustomForm> createState() => _MyCustomFormState();\\n}\\n// Define a corresponding State class.\\n// This class holds the data related to the Form.\\nclass _MyCustomFormState extends State<MyCustomForm> {\\n  // Create a text controller and use it to retrieve the current value\\n  // of the TextField.\\n  final myController = TextEditingController();\\n\\n  @override\\n  void dispose() {\\n    // Clean up the controller when the widget is disposed.\\n    myController.dispose();\\n    super.dispose();\\n  }\\n\\n  @override\\n  Widget build(BuildContext context) {\\n    // Fill this out in the next step.\\n  }\\n}\",language:\"JSX\"})})}),/*#__PURE__*/t(\"h3\",{children:[\"Supply the \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"}),\" to a \",/*#__PURE__*/e(\"code\",{children:\"TextField\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Now that you have a \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"}),\", wire it up to a text field using the \",/*#__PURE__*/e(\"code\",{children:\"controller\"}),\" property:\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"return TextField(\\n  controller: myController,\\n);\",language:\"JSX\"})})}),/*#__PURE__*/e(\"h2\",{children:\"Display the current value of the text field\"}),/*#__PURE__*/t(\"p\",{children:[\"Retrieve the user-entered text using the \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/TextEditingController/text.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"text()\"})}),\" method provided by \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"}),\". You can then utilize this data as needed within your app.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"FloatingActionButton(\\n// When the user presses the button, show an alert dialog containing\\n// the text that the user has entered into the text field.\\n  onPressed: () {\\n    showDialog(\\n      context: context,\\n      builder: (context) {\\n        return AlertDialog(\\n          // Retrieve the text that the user has entered by using the\\n          // TextEditingController.\\n          content: Text(myController.text),\\n        );\\n      },\\n    );\\n  },\\n  tooltip: 'Show me the value!',\\n  child: const Icon(Icons.text_fields),\\n),\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:\"The following code displays an alert dialog with the current value of the text field when the user taps a floating action button.\"}),/*#__PURE__*/e(\"h3\",{children:\"Interactive example\"})]});export const richText9=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"405\",src:\"https://framerusercontent.com/images/WWxLF4x4R4YqRcygwJViZdJs.gif\",srcSet:\"https://framerusercontent.com/images/WWxLF4x4R4YqRcygwJViZdJs.gif?scale-down-to=512 512w,https://framerusercontent.com/images/WWxLF4x4R4YqRcygwJViZdJs.gif?scale-down-to=1024 1024w,https://framerusercontent.com/images/WWxLF4x4R4YqRcygwJViZdJs.gif 1920w\",style:{aspectRatio:\"1920 / 810\"},width:\"960\"}),/*#__PURE__*/e(\"p\",{children:\"Want to update your app dynamically as users type in text fields? \"}),/*#__PURE__*/e(\"p\",{children:\"Discover two easy methods in Flutter:\"}),/*#__PURE__*/t(\"p\",{children:[\"1. Utilize the \",/*#__PURE__*/e(\"code\",{children:\"onChanged()\"}),\" callback to a \",/*#__PURE__*/e(\"code\",{children:\"TextField\"}),\" or a \",/*#__PURE__*/e(\"code\",{children:\"TextFormField\"}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"2. Leverage \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"}),\" for seamless text updates.\"]}),/*#__PURE__*/t(\"h3\",{children:[\"Supply an \",/*#__PURE__*/e(\"code\",{children:\"onChanged()\"}),\" callback to a \",/*#__PURE__*/e(\"code\",{children:\"TextField\"}),\" or a \",/*#__PURE__*/e(\"code\",{children:\"TextFormField\"})]}),/*#__PURE__*/e(\"p\",{children:\"The easiest way to track text changes in Flutter is by using the onChanged() callback with a TextField or TextFormField. This example demonstrates printing the current value and length of the text field to the console whenever the text changes.\"}),/*#__PURE__*/e(\"p\",{children:\"Remember to handle characters appropriately, especially when dealing with user input, to ensure accurate character counting.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"TextField(\\n  onChanged: (text) {\\n    print('First text field: $text (${text.characters.length})');\\n  },\\n),\",language:\"JSX\"})})}),/*#__PURE__*/t(\"h3\",{children:[\"Use a \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"})]}),/*#__PURE__*/t(\"p\",{children:[\"A more powerful, but more elaborate approach, is to supply a \",/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/TextEditingController-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"TextEditingController\"})})}),\" as the \",/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/TextField/controller.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"controller\"})})}),\" property of the \",/*#__PURE__*/e(\"code\",{children:\"TextField\"}),\" or a \",/*#__PURE__*/e(\"code\",{children:\"TextFormField\"}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"To be notified when the text changes, listen to the controller using the \",/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/foundation/ChangeNotifier/addListener.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"addListener()\"})})}),\" method using the following steps:\"]}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(33, 33, 33)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Create a \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Connect the \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"}),\" to a text field.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Create a function to print the latest value.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Listen to the controller for changes.\"})})]}),/*#__PURE__*/t(\"h4\",{children:[\"Create a \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Create a \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"}),\":\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"// Define a custom Form widget.\\nclass MyCustomForm extends StatefulWidget {\\n  const MyCustomForm({super.key});\\n\\n  @override\\n  State<MyCustomForm> createState() => _MyCustomFormState();\\n}\\n// Define a corresponding State class.\\n// This class holds data related to the Form.\\nclass _MyCustomFormState extends State<MyCustomForm> {\\n  // Create a text controller. Later, use it to retrieve the\\n  // current value of the TextField.\\n  final myController = TextEditingController();\\n\\n  @override\\n  void dispose() {\\n    // Clean up the controller when the widget is removed from the\\n    // widget tree.\\n    myController.dispose();\\n    super.dispose();\\n  }\\n\\n  @override\\n  Widget build(BuildContext context) {\\n    // Fill this out in the next step.\\n  }\\n}\",language:\"JSX\"})})}),/*#__PURE__*/t(\"h4\",{children:[\"Connect the \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"}),\" to a text field\"]}),/*#__PURE__*/t(\"p\",{children:[\"You need a function to run every time the text changes. Create a method in the \",/*#__PURE__*/e(\"code\",{children:\"_MyCustomFormState\"}),\" class that prints out the current value of the text field.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"void _printLatestValue() {\\n  final text = myController.text;\\n  print('Second text field: $text (${text.characters.length})');\\n}\",language:\"JSX\"})})}),/*#__PURE__*/e(\"h4\",{children:\"Listen to the controller for changes\"}),/*#__PURE__*/t(\"p\",{children:[\"Finally, listen to the \",/*#__PURE__*/e(\"code\",{children:\"TextEditingController\"}),\" and call the \",/*#__PURE__*/e(\"code\",{children:\"_printLatestValue()\"}),\" method when the text changes. Use the \",/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/foundation/ChangeNotifier/addListener.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"addListener()\"})})}),\" method for this purpose.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Begin listening for changes when the \",/*#__PURE__*/e(\"code\",{children:\"_MyCustomFormState\"}),\" class is initialized, and stop listening when the \",/*#__PURE__*/e(\"code\",{children:\"_MyCustomFormState\"}),\" is disposed.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"@override\\nvoid initState() {\\n  super.initState();\\n\\n  // Start listening to changes.\\n  myController.addListener(_printLatestValue);\\n}\",language:\"JSX\"})})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"@override\\nvoid dispose() {\\n  // Clean up the controller when the widget is removed from the widget tree.\\n  // This also removes the _printLatestValue listener.\\n  myController.dispose();\\n  super.dispose();\\n}\",language:\"JSX\"})})}),/*#__PURE__*/t(\"h3\",{children:[/*#__PURE__*/e(\"br\",{}),\"Interactive example\"]})]});export const richText10=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"405\",src:\"https://framerusercontent.com/images/varz6ukmpIDfm5WiIqiagpCWSLI.gif\",srcSet:\"https://framerusercontent.com/images/varz6ukmpIDfm5WiIqiagpCWSLI.gif?scale-down-to=512 512w,https://framerusercontent.com/images/varz6ukmpIDfm5WiIqiagpCWSLI.gif?scale-down-to=1024 1024w,https://framerusercontent.com/images/varz6ukmpIDfm5WiIqiagpCWSLI.gif 1920w\",style:{aspectRatio:\"1920 / 810\"},width:\"960\"}),/*#__PURE__*/e(\"p\",{children:\"When developing forms in Flutter, managing focus is essential for providing a seamless user experience. Whether it's directing focus to a text field upon screen navigation or in response to user interaction, understanding how to manage focus is crucial.\"}),/*#__PURE__*/e(\"p\",{children:\"For instance, imagine a search screen where users should start typing immediately upon arrival. By setting focus to the search text field automatically, you streamline the user experience.\"}),/*#__PURE__*/e(\"p\",{children:\"In this recipe, discover how to manage focus effectively in two scenarios: automatically focusing on a text field when it's visible and programmatically focusing on a text field when a button is tapped.\"}),/*#__PURE__*/e(\"h3\",{children:\"Focus on a text field as soon as it's visible\"}),/*#__PURE__*/e(\"p\",{children:\"To automatically set focus to a text field when it becomes visible, utilize the autofocus property:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"TextField(\\n  autofocus: true,\\n);\\n\",language:\"JSX\"})})}),/*#__PURE__*/e(\"h3\",{children:\"Focus a text field when a button is tapped\"}),/*#__PURE__*/e(\"p\",{children:\"In this example, give focus to a text field after the user presses a button using the following steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Create a \",/*#__PURE__*/e(\"code\",{children:\"FocusNode\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Pass the \",/*#__PURE__*/e(\"code\",{children:\"FocusNode\"}),\" to a \",/*#__PURE__*/e(\"code\",{children:\"TextField\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Give focus to the \",/*#__PURE__*/e(\"code\",{children:\"TextField\"}),\" when a button is tapped.\"]})})]}),/*#__PURE__*/e(\"ol\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"h4\",children:/*#__PURE__*/t(\"h4\",{children:[\"Create a \",/*#__PURE__*/e(\"code\",{children:\"FocusNode\"})]})})}),/*#__PURE__*/t(\"p\",{children:[\"Define a \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/FocusNode-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"FocusNode\"})}),\" to identify the target \",/*#__PURE__*/e(\"code\",{children:\"TextField\"}),\" in Flutter's focus tree. \"]}),/*#__PURE__*/t(\"p\",{children:[\"Since focus nodes are long-lived objects, manage the lifecycle using a \",/*#__PURE__*/e(\"code\",{children:\"State\"}),\" object. Use the following instructions to create a \",/*#__PURE__*/e(\"code\",{children:\"FocusNode\"}),\" instance inside the \",/*#__PURE__*/e(\"code\",{children:\"initState()\"}),\" method of a \",/*#__PURE__*/e(\"code\",{children:\"State\"}),\" class, and clean it up in the \",/*#__PURE__*/e(\"code\",{children:\"dispose()\"}),\" method:\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"// Define a custom Form widget.\\nclass MyCustomForm extends StatefulWidget {\\n  const MyCustomForm({super.key});\\n\\n  @override\\n  State<MyCustomForm> createState() => _MyCustomFormState();\\n}\\n// Define a corresponding State class.\\n// This class holds data related to the form.\\nclass _MyCustomFormState extends State<MyCustomForm> {\\n  // Define the focus node. To manage the lifecycle, \\n  //create the FocusNode in\\n  // the initState method, and clean it up in the dispose method.\\n  late FocusNode myFocusNode;\\n\\n  @override\\n  void initState() {\\n    super.initState();\\n\\n    myFocusNode = FocusNode();\\n  }\\n\\n  @override\\n  void dispose() {\\n    // Clean up the focus node when the Form is disposed of.\\n    myFocusNode.dispose();\\n\\n    super.dispose();\\n  }\\n\\n  @override\\n  Widget build(BuildContext context) {\\n    // Fill this out in the next step.\\n  }\\n}\",language:\"JSX\"})})}),/*#__PURE__*/e(\"ol\",{start:\"2\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"h4\",children:/*#__PURE__*/e(\"h4\",{children:\"Pass the FocusNode to a TextField \"})})}),/*#__PURE__*/t(\"p\",{children:[\"Within the \",/*#__PURE__*/e(\"code\",{children:\"build()\"}),\" method, associate the \",/*#__PURE__*/e(\"code\",{children:\"FocusNode\"}),\" with the desired TextField:\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"@override\\nWidget build(BuildContext context) {\\n  return TextField(\\n    focusNode: myFocusNode,\\n  );\\n}\",language:\"JSX\"})})}),/*#__PURE__*/e(\"ol\",{start:\"3\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"h4\",children:/*#__PURE__*/e(\"h4\",{children:\"Give focus to the TextField when a button is tapped \"})})}),/*#__PURE__*/t(\"p\",{children:[\"Upon pressing a button, use the \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/FocusNode/requestFocus.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"requestFocus()\"})}),\" method to direct focus to the specified text field:\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"FloatingActionButton(\\n  // When the button is pressed,\\n  // give focus to the text field using myFocusNode.\\n  onPressed: () => myFocusNode.requestFocus(),\\n  tooltip: 'Focus TextField',\\n  child: Icon(Icons.edit),\\n),\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:\"By implementing these techniques, you can effectively manage focus in your Flutter applications for enhanced user interaction\"}),/*#__PURE__*/e(\"h3\",{children:\"Interactive example\"})]});export const richText11=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"In the context of app development, gathering accurate user input is crucial. Whether it's for logging in or signing up, ensuring the data entered meets certain criteria is essential for app security and usability. Let's explore how to implement validation in a form with a single text field:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Create \"}),\"a \",/*#__PURE__*/e(\"code\",{children:\"Form\"}),/*#__PURE__*/e(\"strong\",{children:\" with a \"}),/*#__PURE__*/e(\"code\",{children:\"GlobalKe\"}),/*#__PURE__*/e(\"strong\",{children:\":\"}),\" Establish a form with a unique identifier to manage its state and perform validation.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Add Validation Logic to the \"}),/*#__PURE__*/e(\"code\",{children:\"TextFormField\"}),\" \",/*#__PURE__*/e(\"strong\",{children:\":\"}),\" Implement validation logic within the text field to verify the entered data meets specific requirements.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Provide Feedback to the User:\"}),\" Display informative error messages to guide users when they input invalid data, ensuring a seamless and user-friendly experience.\"]})})]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"540\",src:\"https://framerusercontent.com/images/R1NRT0UcqnHJvfNaQfoK9qE8o0.gif\",srcSet:\"https://framerusercontent.com/images/R1NRT0UcqnHJvfNaQfoK9qE8o0.gif?scale-down-to=512 512w,https://framerusercontent.com/images/R1NRT0UcqnHJvfNaQfoK9qE8o0.gif?scale-down-to=1024 1024w,https://framerusercontent.com/images/R1NRT0UcqnHJvfNaQfoK9qE8o0.gif 1920w\",style:{aspectRatio:\"1920 / 1080\"},width:\"960\"}),/*#__PURE__*/t(\"h3\",{children:[\"1. Create a \",/*#__PURE__*/e(\"code\",{children:\"Form\"}),\" with a \",/*#__PURE__*/e(\"code\",{children:\"GlobalKey\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Create a \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/Form-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Form\"})}),\" with a \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/GlobalKey-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"GlobalKey\"})}),\" to organize and validate form fields efficiently. Using a \",/*#__PURE__*/e(\"code\",{children:\"StatefulWidget\"}),\" ensures optimal resource usage by storing a single \",/*#__PURE__*/e(\"code\",{children:\"GlobalKey<FormState>()\"}),\" once.\"]}),/*#__PURE__*/t(\"p\",{children:[\"If you made this a \",/*#__PURE__*/e(\"code\",{children:\"StatelessWidget\"}),\", you'd need to store this key \",/*#__PURE__*/e(\"em\",{children:\"somewhere\"}),\". As it is resource-expensive, you wouldn't want to generate a new \",/*#__PURE__*/e(\"code\",{children:\"GlobalKey\"}),\" each time you run the \",/*#__PURE__*/e(\"code\",{children:\"build\"}),\" method.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"import 'package:flutter/material.dart';\\n\\n// Define a custom Form widget.\\nclass MyCustomForm extends StatefulWidget {\\n  const MyCustomForm({super.key});\\n\\n  @override\\n  MyCustomFormState createState() {\\n    return MyCustomFormState();\\n  }\\n}\\n// Define a corresponding State class.\\n// This class holds data related to the form.\\nclass MyCustomFormState extends State<MyCustomForm> {\\n  // Create a global key that uniquely identifies the Form widget\\n  // and allows validation of the form.\\n  //\\n  // Note: This is a `GlobalKey<FormState>`,\\n  // not a GlobalKey<MyCustomFormState>.\\n  final _formKey = GlobalKey<FormState>();\\n\\n  @override\\n  Widget build(BuildContext context) {\\n    // Build a Form widget using the _formKey created above.\\n    return Form(\\n      key: _formKey,\\n      child: const Column(\\n        children: <Widget>[\\n          // Add TextFormFields and ElevatedButton here.\\n        ],\\n      ),\\n    );\\n  }\\n}\",language:\"JSX\"})})}),/*#__PURE__*/t(\"h3\",{children:[\"2. Add a \",/*#__PURE__*/e(\"code\",{children:\"TextFormField\"}),\" with validation logic\"]}),/*#__PURE__*/t(\"p\",{children:[\"Let's integrate text input fields into our form using \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/TextFormField-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"TextFormField\"})}),\". This widget is essential for user interaction and validation.\"]}),/*#__PURE__*/t(\"p\",{children:[\"We'll ensure the input's validity by adding a \",/*#__PURE__*/e(\"code\",{children:\"validator()\"}),\" function to the \",/*#__PURE__*/e(\"code\",{children:\"TextFormField\"}),\". If the input doesn't meet the required criteria, the \",/*#__PURE__*/e(\"code\",{children:\"validator\"}),\" function returns a \",/*#__PURE__*/e(\"code\",{children:\"String\"}),\" containing an error message. Otherwise, it returns null.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In this example, we'll validate if the \",/*#__PURE__*/e(\"code\",{children:\"TextFormField\"}),\" is empty. If so, we'll prompt the user to fill in the field.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"TextFormField(\\n  // The validator receives the text that the user has entered.\\n  validator: (value) {\\n    if (value == null || value.isEmpty) {\\n      return 'Please enter some text';\\n    }\\n    return null;\\n  },\\n),\",language:\"JSX\"})})}),/*#__PURE__*/e(\"h3\",{children:\"3. Create a button to validate and submit the form\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, we'll include a button to trigger form validation and submission. Upon pressing the button, the validator function executes, validating the input. If the input is valid, the form can be submitted for further processing.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"ElevatedButton(\\n  onPressed: () {\\n    if (_formKey.currentState!.validate()) {\\n      // Form is valid, submit data\\n    }\\n  },\\n  child: Text('Submit'),\\n)\",language:\"JSX\"})})}),/*#__PURE__*/e(\"h4\",{children:\"How does this work?\"}),/*#__PURE__*/t(\"p\",{children:[\"To validate the form, we utilize the \",/*#__PURE__*/e(\"code\",{children:\"_formKey\"}),\"  created earlier. With this key, we access the \",/*#__PURE__*/e(\"code\",{children:\"FormState\"}),\" using \",/*#__PURE__*/e(\"code\",{children:\"_formKey.currentState()\"}),\". The \",/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/FormState-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"FormState\"})})}),\" class provides the \",/*#__PURE__*/e(\"code\",{children:\"validate()\"}),\" method, which triggers the validation process for each field in the form.\"]}),/*#__PURE__*/t(\"p\",{children:[\"If the validation succeeds for all fields, \",/*#__PURE__*/e(\"code\",{children:\"validate()\"}),\" returns true, indicating that the form is valid. However, if any field fails validation, the method rebuilds the form, displaying error messages accordingly, and returns \",/*#__PURE__*/e(\"code\",{children:\"false\"}),\".\"]}),/*#__PURE__*/t(\"h5\",{children:[/*#__PURE__*/e(r,{href:\"https://pub.dev/documentation/flutter_formx/latest/\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Flutter FormX Package \"})}),\"- \"]}),/*#__PURE__*/t(\"p\",{children:[\"Flutter FormX is an extensible package to make it easy to build, react to and validate forms using \",/*#__PURE__*/e(r,{href:\"https://pub.dev/packages/mobx\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"MobX\"})}),\" and \",/*#__PURE__*/e(r,{href:\"https://pub.dev/packages/bloc\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Bloc\"})}),\".\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"350\",src:\"https://framerusercontent.com/images/WBpsobyvJlgYh6yjUieE1w3A8.gif\",srcSet:\"https://framerusercontent.com/images/WBpsobyvJlgYh6yjUieE1w3A8.gif 323w\",style:{aspectRatio:\"323 / 700\"},width:\"161\"}),/*#__PURE__*/e(\"h4\",{children:\"Interactive example\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Demonstrates building a form with validation in Flutter.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Includes input fields for email and password.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Features a checkbox for accepting terms and conditions.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Form validation ensures both fields are filled and terms are accepted before submission.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Upon successful submission, the form data is processed and a success message is displayed.\"})})]})]});export const richText12=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/t(\"h4\",{children:[/*#__PURE__*/e(r,{href:\"https://www.blup.in/downloads\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Start Building with Blup\"})}),\" - Blup's Role in App Development\"]}),/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/Form-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{className:\"framer-image\",\"data-preset-tag\":\"img\",children:/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"702\",src:\"https://framerusercontent.com/images/q7fH5IO4ylVUm7EYXtVvV2lMQfU.webp\",srcSet:\"https://framerusercontent.com/images/q7fH5IO4ylVUm7EYXtVvV2lMQfU.webp?scale-down-to=512 512w,https://framerusercontent.com/images/q7fH5IO4ylVUm7EYXtVvV2lMQfU.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/q7fH5IO4ylVUm7EYXtVvV2lMQfU.webp 2048w\",style:{aspectRatio:\"2048 / 1405\"},width:\"1024\"})})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Blup Tool: With its user-friendly interface and robust capabilities, Blup is an ideal solution for shipping industry app development.\"})})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Ease of Use: Blup's intuitive interface enables even novice users to create functional and visually appealing apps effortlessly.\"})})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Flexibility with Flutter: Built on the Flutter framework, Blup offers unmatched flexibility, allowing developers to create apps that run seamlessly on iOS and Android with a single codebase.\"})})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Rapid Prototyping: Blup facilitates rapid prototyping, enabling businesses to swiftly develop and test their app ideas in real-world environments. This is particularly beneficial in the dynamic shipping industry, where market needs evolve quickly.\"})})})]});export const richText13=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Are you ready to dive into the world of Flutter development? Whether you're a beginner looking to build your first app or an experienced developer aiming to enhance your skills, Blup has you covered with our comprehensive Flutter Learning Roadmap Series.\"}),/*#__PURE__*/e(\"h3\",{children:\"Previous Blogs: Flutter Learning Roadmaps Series \"}),/*#__PURE__*/t(\"p\",{children:['List previous blogs in the Flutter Learning Roadmaps Series, including \"',/*#__PURE__*/e(r,{href:\"https://www.blup.in/blog/mastering-gestures-in-flutter-taps-drags-gesture-detector-and-more\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Mastering Gestures in Flutter: Taps, Drags, multi-touch gestures, Gesture Detector and More.\"})}),'\" for readers to reference and continue their learning.']}),/*#__PURE__*/e(\"p\",{children:\"Here's a list of reference links for the keywords and widgets used in the content:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/Form-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Form\"})}),\", \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/GlobalKey-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"GlobalKey\"})}),\", \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/TextFormField-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"TextFormField\"})}),\", \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/FormState-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"FormState\"})}),\".                             \"]}),/*#__PURE__*/t(\"p\",{children:[\"To learn how to retrieve these values, check out the \",/*#__PURE__*/e(r,{href:\"https://docs.flutter.dev/cookbook/forms/retrieve-input\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Retrieve the value of a text field\"})}),\" recipe.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Resources to Get Started\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgba(0, 0, 0, 0.8)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://www.blup.in/blog/enhancing-user-interaction-adding-interactivity-to-your-flutter-app\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Blup \u2014 Flutter Learning Roadmap\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://flutter.dev/community\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Flutter Community\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://stackoverflow.com/questions/tagged/flutter\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Stack Overflow \u2014 Flutter\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://www.reddit.com/r/FlutterDev/comments/110037e/active_discord_communities/\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"r/FlutterDev on Reddit\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://discord.com/invite/rflutterdev\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Flutter Discord Channel\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://github.com/flutter\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"GitHub \u2014 Flutter\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://medium.com/flutter\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Medium \u2014 Flutter\"})})})})]})]});export const richText14=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Ready to bring your app ideas to life? Partner with \",/*#__PURE__*/e(r,{href:\"https://www.blup.in/contact-blup-services\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Blup Services\"})}),\" today and experience the difference! \",/*#__PURE__*/e(r,{href:\"https://www.blup.in/contact\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Contact us\"})}),\" now to schedule a consultation and start your app development journey on the right track.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"438\",src:\"https://framerusercontent.com/images/79kTWcl1MNNgHpi2eh4zevbg.png\",srcSet:\"https://framerusercontent.com/images/79kTWcl1MNNgHpi2eh4zevbg.png?scale-down-to=512 512w,https://framerusercontent.com/images/79kTWcl1MNNgHpi2eh4zevbg.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/79kTWcl1MNNgHpi2eh4zevbg.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/79kTWcl1MNNgHpi2eh4zevbg.png 3120w\",style:{aspectRatio:\"3120 / 877\"},width:\"1560\"}),/*#__PURE__*/t(\"p\",{children:[\"Benefits of Choosing \",/*#__PURE__*/e(r,{href:\"https://www.blup.in/contact-blup-services\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Blup Services\"})}),\":\"]}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\",\"--list-style-type\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Tailored Solutions: Get customized Flutter apps crafted to match your unique business needs and objectives.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Swift Development: Enjoy accelerated project timelines, ensuring timely delivery of top-quality applications.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cost Savings: Maximize efficiency and reduce project expenses with our optimized development process. Unlock the full potential of your app development projects with Blup Services. Contact us today to get started!\"})})]})]});export const richText15=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Learn input & form essentials in Flutter. Explore Blup for seamless app dev.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"Discover essential techniques in Flutter input and form management through our comprehensive guide. From creating and styling text fields to handling changes and managing focus, we've covered it all. \"]}),/*#__PURE__*/e(\"p\",{children:\"Dive deep into building forms with validation, ensuring seamless user interaction. Explore Blup for effortless app development, and access curated Flutter learning resources to enhance your skills further. Take your Flutter journey to new heights with our insightful blog series.\"})]});export const richText16=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Welcome to our comprehensive guide on mastering gestures in Flutter! Gestures play a crucial role in enhancing user interaction and engagement in Flutter app development. As part of the Flutter Learning Roadmaps Series, this blog focuses on empowering you with the knowledge and skills to effectively implement gestures in your Flutter apps.\"}),/*#__PURE__*/e(\"p\",{children:\"Did you know that gestures are essential for creating intuitive user interfaces in Flutter apps? Implementing gesture recognition allows users to interact with your app in natural and fluid ways. Mastering gestures can significantly improve the user experience and make your app more engaging and enjoyable to use.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Commonly Asked Questions:\"})}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What are the different types of gestures supported in Flutter?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How can I add gesture detection to widgets in my Flutter app?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What are some best practices for handling multi-touch gestures in Flutter?\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Before we dive into mastering gestures, let's briefly recap our previous blog in the Flutter Learning Roadmaps Series. In \\\"Adding Interactivity to Your Flutter App,\\\" we explored topics such as stateful and stateless widgets, managing state, troubleshooting tips, and valuable resources. If you haven't already, be sure to check it out to lay a solid foundation for understanding gestures in Flutter.\"}),/*#__PURE__*/e(\"p\",{children:\"Stay tuned as we embark on this exciting journey of mastering gestures in Flutter!\"})]});export const richText17=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Pointers are the first layer that represents the raw data about user interaction. They include events describing the location and movement of pointers, such as touches, mice, and stylus movements, across the screen. \"}),/*#__PURE__*/e(\"p\",{children:\"In Flutter, there are four main types of pointer-events:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-line-height\":\"24px\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-line-height\":\"25px\",\"--framer-text-color\":\"rgb(0, 0, 0)\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/gestures/PointerDownEvent-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"PointerDownEvents\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-line-height\":\"25px\",\"--framer-text-color\":\"rgb(0, 0, 0)\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/gestures/PointerMoveEvent-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"PointerMoveEvents\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-line-height\":\"25px\",\"--framer-text-color\":\"rgb(0, 0, 0)\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/gestures/PointerUpEvent-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"PointerUpEvents\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-line-height\":\"25px\",\"--framer-text-color\":\"rgb(0, 0, 0)\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/gestures/PointerCancelEvent-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"PointerCancelEvents\"})})})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"PointerDownEvent:\"}),\" Occurs when the pointer contacts the screen at a specific location.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"PointerMoveEvent:\"}),\" Triggered when the pointer moves from one location on the screen to another.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"PointerUpEvent:\"}),\" Indicates that the pointer has stopped contacting the screen.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"PointerCancelEvent:\"}),\" Signals that input from this pointer is no longer directed towards the app.\"]}),/*#__PURE__*/e(\"video\",{autoPlay:!0,className:\"framer-image\",loop:!0,muted:!0,playsInline:!0,src:\"https://framerusercontent.com/assets/eLllbkSRd303DA3Sg7xTVTWHkDQ.mp4\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Key Points:\"})}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Pointers as Input Devices: Discuss the role of pointers as input devices in Flutter applications. Emphasize their importance in capturing user interactions such as taps, drags, and multi-touch gestures.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Pointer Events: Explain the lifecycle of pointer events in Flutter, including the different types of events such as pointer down, pointer move, and pointer up. Provide insights into how Flutter processes these events to determine user gestures.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Pointer Properties: Explore the properties associated with pointers, such as position, pressure, and device orientation. Highlight how these properties can be leveraged to create more intuitive and responsive user interfaces.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Handling Pointer Events: Provide practical examples demonstrating how to handle pointer events in Flutter widgets. Showcase techniques for detecting gestures like taps, long-presses, and swipes using pointer event handlers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Optimizing Pointer Interactions: Share tips for optimizing pointer interactions in Flutter apps to ensure smooth and efficient user experiences. Discuss strategies for reducing gesture recognition latency and improving overall responsiveness.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Flutter does not provide any mechanism to cancel or stop pointer events from being dispatched further. However, it offers a\",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/Listener-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\" Listener\"})}),\" widget to directly listen to pointer events from the widget layer.\"]})]});export const richText18=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Gestures play a crucial role in Flutter app development, representing semantic actions recognized from multiple individual pointer events. Let's explore some key gestures and their corresponding lifecycle events:\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"405\",src:\"https://framerusercontent.com/images/LTOuWVZqYBFoXAuFZ2QxAe3ZJs.png\",srcSet:\"https://framerusercontent.com/images/LTOuWVZqYBFoXAuFZ2QxAe3ZJs.png?scale-down-to=512 512w,https://framerusercontent.com/images/LTOuWVZqYBFoXAuFZ2QxAe3ZJs.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/LTOuWVZqYBFoXAuFZ2QxAe3ZJs.png 1920w\",style:{aspectRatio:\"1920 / 810\"},width:\"960\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Tap:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onTapDown\"})}),/*#__PURE__*/e(\"p\",{children:\"A pointer that might cause a tap has contacted the screen at a particular location.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onTapUp\"})}),/*#__PURE__*/e(\"p\",{children:\"A pointer that triggers a tap has stopped contacting the screen at a particular location.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onTap\"})}),/*#__PURE__*/t(\"p\",{children:[\"The pointer that previously triggered the \",/*#__PURE__*/e(\"code\",{children:\"onTapDown\"}),\" has also triggered \",/*#__PURE__*/e(\"code\",{children:\"onTapUp\"}),\" which ends up causing a tap.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onTapCancel\"})}),/*#__PURE__*/t(\"p\",{children:[\"The pointer that previously triggered the \",/*#__PURE__*/e(\"code\",{children:\"onTapDown\"}),\" won't end up causing a tap.\"]})]})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Double Tap:\"})}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onDoubleTap\"})}),/*#__PURE__*/e(\"p\",{children:\"The user has tapped the screen at the same location twice in quick succession.\"})]})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Long Press:\"})}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onLongPress\"})}),/*#__PURE__*/e(\"p\",{children:\"A pointer has remained in contact with the screen at the same location for a long period.\"})]})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Vertical Drag:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onVerticalDragStart\"})}),/*#__PURE__*/e(\"p\",{children:\"A pointer has contacted the screen and might begin to move vertically.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onVerticalDragUpdate\"})}),/*#__PURE__*/e(\"p\",{children:\"A pointer that is in contact with the screen and moving vertically has moved in the vertical direction.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onVerticalDragEnd\"})}),/*#__PURE__*/e(\"p\",{children:\"A pointer that was previously in contact with the screen and moving vertically is no longer in contact with the screen and was moving at a specific velocity when it stopped contacting the screen.\"})]})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Horizontal Drag:\"})}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onHorizontalDragStart\"})}),/*#__PURE__*/e(\"p\",{children:\"A pointer has contacted the screen and might begin to move horizontally.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onHorizontalDragUpdate\"})}),/*#__PURE__*/e(\"p\",{children:\"A pointer that is in contact with the screen and moving horizontally has moved in the horizontal direction.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onHorizontalDragEnd\"})}),/*#__PURE__*/e(\"p\",{children:\"A pointer that was previously in contact with the screen and moving horizontally is no longer in contact with the screen and was moving at a specific velocity when it stopped contacting the screen.\"})]})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Pan:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onPanStart\"})}),/*#__PURE__*/t(\"p\",{children:[\"A pointer has contacted the screen and might begin to move horizontally or vertically. This callback crashes if \",/*#__PURE__*/e(\"code\",{children:\"onHorizontalDragStart\"}),\" or \",/*#__PURE__*/e(\"code\",{children:\"onVerticalDragStart\"}),\" is set.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onPanUpdate\"})}),/*#__PURE__*/t(\"p\",{children:[\"A pointer that is in contact with the screen and is moving in the vertical or horizontal direction. This callback crashes if \",/*#__PURE__*/e(\"code\",{children:\"onHorizontalDragUpdate\"}),\" or \",/*#__PURE__*/e(\"code\",{children:\"onVerticalDragUpdate\"}),\" is set.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"onPanEnd\"})}),/*#__PURE__*/t(\"p\",{children:[\"A pointer that was previously in contact with the screen is no longer in contact with the screen and is moving at a specific velocity when it stops contacting the screen. This callback crashes if \",/*#__PURE__*/e(\"code\",{children:\"onHorizontalDragEnd\"}),\" or \",/*#__PURE__*/e(\"code\",{children:\"onVerticalDragEnd\"}),\" is set.\"]})]})]}),/*#__PURE__*/e(\"p\",{children:\"Understanding these gestures and their associated events is essential for implementing smooth and responsive user interactions in your Flutter apps. By leveraging Flutter's gesture detection mechanisms, you can create dynamic and intuitive app experiences that delight users. \"})]});export const richText19=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"In Flutter app development, mastering gesture detection is essential for creating intuitive user experiences. The Gesture Detector widget serves as a powerful tool for detecting various gestures, enabling developers to enhance user interaction within their apps.\"}),/*#__PURE__*/e(\"h3\",{children:\"Adding Gesture Detection to Widgets \"}),/*#__PURE__*/t(\"p\",{children:[\"To listen to gestures from the widgets layer in Flutter, developers can utilize the \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/GestureDetector-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"GestureDetector\"})}),\" widget. This versatile widget allows for the detection of various gestures, such as taps, drags, and multi-touch gestures, enabling developers to create interactive user interfaces effortlessly.\"]}),/*#__PURE__*/t(\"p\",{children:[\"If you're utilizing Material Components in your Flutter app, many widgets already respond to taps or gestures. For instance, \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/IconButton-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"IconButton\"})}),\" and \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/TextButton-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"TextButton \"})}),\"respond to presses (taps), while \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/ListView-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"ListView\"})}),' responds to swipes to trigger scrolling. If you require the \"ink splash\" effect on a tap, you can employ the ',/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/InkWell-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"InkWell \"})}),\"widget.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Gesture Disambiguation:\"}),\" \"]}),/*#__PURE__*/e(\"p\",{children:\"In scenarios where multiple gesture detectors coexist at a given location on the screen, the framework employs gesture disambiguation techniques to determine which gesture should be recognized. For example:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"A \",/*#__PURE__*/e(\"code\",{children:\"ListTile\"}),\" may contain a tap recognizer for the entire ListTile and a nested one around a trailing icon button. In this case, the screen area of the trailing icon is covered by two gesture recognizers, necessitating negotiation for handling the gesture.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"A single \",/*#__PURE__*/e(\"code\",{children:\"GestureDetector\"}),\" may cover a screen area configured to handle multiple gestures, such as a \",/*#__PURE__*/e(\"code\",{children:\"long press\"}),\" and a \",/*#__PURE__*/e(\"code\",{children:\"tap\"}),\". In such cases, the \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/GestureDetector-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"GestureDetector \"})}),\"decides which gesture to attempt to recognize based on its callback configurations.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"The gesture arena mechanism facilitates gesture disambiguation by allowing recognizers to join and compete for handling gestures. The arena determines the winning gesture recognizer based on specific rules:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A recognizer can eliminate itself from the arena, leaving only one recognizer as the winner.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A recognizer can declare itself the winner, causing all remaining recognizers to lose.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"For instance, when disambiguating between horizontal and vertical dragging, both recognizers enter the arena upon receiving the pointer down event. The winning recognizer (horizontal or vertical) is declared based on the user's movement, facilitating smooth and intuitive gesture recognition.\"}),/*#__PURE__*/e(\"p\",{children:\"By understanding and implementing gesture detection and disambiguation techniques, developers can create highly interactive and responsive Flutter apps that deliver exceptional user experiences.\"})]});export const richText20=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"This Flutter app demonstrates the use of GestureDetector to handle multiple gestures. When users interact with the screen by tapping, double tapping, long-pressing, dragging vertically or horizontally, or scaling, corresponding actions are printed to the console. The GestureDetector wraps a Container displaying text in the center, providing an interactive area for users.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"import 'package:flutter/material.dart';\\n\\nvoid main() {\\n  runApp(MyApp());\\n}\\n\\nclass MyApp extends StatelessWidget {\\n  @override\\n  Widget build(BuildContext context) {\\n    return MaterialApp(\\n      home: MultiGestureExample(),\\n    );\\n  }\\n}\\n\\nclass MultiGestureExample extends StatefulWidget {\\n  @override\\n  _MultiGestureExampleState createState() => _MultiGestureExampleState();\\n}\\n\\nclass _MultiGestureExampleState extends State<MultiGestureExample> {\\n  String _gestureDetected = '';\\n\\n  void _onTap() {\\n    setState(() {\\n      _gestureDetected = 'Tap Detected';\\n    });\\n  }\\n\\n  void _onDoubleTap() {\\n    setState(() {\\n      _gestureDetected = 'Double Tap Detected';\\n    });\\n  }\\n\\n  void _onLongPress() {\\n    setState(() {\\n      _gestureDetected = 'Long Press Detected';\\n    });\\n  }\\n\\n  void _onPanStart(DragStartDetails details) {\\n    setState(() {\\n      _gestureDetected = 'Pan Started';\\n    });\\n  }\\n\\n  void _onPanUpdate(DragUpdateDetails details) {\\n    setState(() {\\n      _gestureDetected = 'Pan Update: dx=${details.delta.dx}, dy=${details.delta.dy}';\\n    });\\n  }\\n\\n  void _onPanEnd(DragEndDetails details) {\\n    setState(() {\\n      _gestureDetected = 'Pan Ended';\\n    });\\n  }\\n\\n  @override\\n  Widget build(BuildContext context) {\\n    return Scaffold(\\n      appBar: AppBar(\\n        title: Text('Multiple Gesture Example'),\\n      ),\\n      body: GestureDetector(\\n        onTap: _onTap,\\n        onDoubleTap: _onDoubleTap,\\n        onLongPress: _onLongPress,\\n        onPanStart: _onPanStart,\\n        onPanUpdate: _onPanUpdate,\\n        onPanEnd: _onPanEnd,\\n        child: Container(\\n          alignment: Alignment.center,\\n          color: Colors.blue,\\n          child: Text(\\n            _gestureDetected,\\n            style: TextStyle(color: Colors.white, fontSize: 20),\\n          ),\\n        ),\\n      ),\\n    );\\n  }\\n}\",language:\"JSX\"})})}),/*#__PURE__*/t(\"p\",{children:[\"Explanation: This Flutter code demonstrates a widget that handles multiple gestures simultaneously. The \",/*#__PURE__*/e(\"code\",{children:\"MultiGestureWidget\"}),\" class extends \",/*#__PURE__*/e(\"code\",{children:\"StatefulWidget\"}),\" and contains a \",/*#__PURE__*/e(\"code\",{children:\"GestureDetector\"}),\" widget as its child.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Inside the \",/*#__PURE__*/e(\"code\",{children:\"GestureDetector\"}),\", various gesture callbacks are defined:\"]}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:\"onTap\"}),\": Triggered when a single tap is detected. Updates the \",/*#__PURE__*/e(\"code\",{children:\"_gestureStatus\"}),\" variable with 'Tap Detected'.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:\"onDoubleTap\"}),\": Triggered when a double tap is detected. Updates the \",/*#__PURE__*/e(\"code\",{children:\"_gestureStatus\"}),\" variable with 'Double Tap Detected'.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:\"onLongPress\"}),\": Triggered when a long press is detected. Updates the \",/*#__PURE__*/e(\"code\",{children:\"_gestureStatus\"}),\" variable with 'Long Press Detected'.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:\"onPanUpdate\"}),\": Triggered when a pan gesture (drag) is detected. Updates the \",/*#__PURE__*/e(\"code\",{children:\"_gestureStatus\"}),\" variable with the delta values of the pan gesture.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"The child of the \",/*#__PURE__*/e(\"code\",{children:\"GestureDetector\"}),\" is a \",/*#__PURE__*/e(\"code\",{children:\"Container\"}),\" with a blue background color. Inside the container, a \",/*#__PURE__*/e(\"code\",{children:\"Text\"}),\" the widget displays the current gesture status stored in the \",/*#__PURE__*/e(\"code\",{children:\"_gestureStatus\"}),\" variable.\"]}),/*#__PURE__*/t(\"p\",{children:[\"As the user interacts with the widget, the \",/*#__PURE__*/e(\"code\",{children:\"_gestureStatus\"}),\" updates accordingly to reflect the detected gesture. This example showcases the versatility of handling multiple gestures within a single widget in Flutter.\"]})]});export const richText21=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Enhance Your Flutter Gesture Implementation with Expert Tips and Tricks\"}),/*#__PURE__*/e(\"p\",{children:\"In this section, we'll delve into practical problems and practice tasks to sharpen your skills in implementing Flutter gestures effectively. These exercises are designed to reinforce your understanding and mastery of gesture detection and handling.\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Tapping into Precision:\"}),\" Challenge yourself to implement a tap gesture recognizer that responds to single and double taps accurately. Experiment with different tap durations and provide visual feedback to users.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Dragging to Perfection:\"}),\" Practice implementing a drag gesture recognizer that smoothly moves widgets across the screen in response to user touch. Explore techniques for constraining movement within boundaries and handling velocity-based animations.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Multi-touch Mastery:\"}),\" Dive into the world of multi-touch gestures by creating a custom gesture recognizer that supports simultaneous touch interactions. Implement gestures like pinch-to-zoom and rotate with precision and fluidity.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Unveiling Gesture Detector:\"}),\" Explore the capabilities of the Gesture Detector widget by integrating it into your Flutter app. Experiment with various gesture configurations, including onTap, onPanUpdate, onLongPress, and more, to provide intuitive user interactions.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Disambiguating Gestures:\"}),\" Tackle scenarios where multiple gestures overlap and practice disambiguating them effectively. Implement strategies such as gesture priority, gesture exclusion zones, and gesture cancelation to ensure seamless user experiences.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"By completing these problems and practice tasks, you'll gain invaluable insights and hands-on experience in mastering gestures in Flutter. Apply these tips and tricks to your Flutter projects to create engaging and user-friendly apps that delight users.\"}),/*#__PURE__*/e(\"p\",{children:\"Unlock the full potential of Flutter gestures and elevate your app development skills to new heights with these practical exercises.\"})]});export const richText22=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/t(\"h4\",{children:[/*#__PURE__*/e(r,{href:\"https://www.blup.in/downloads\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Start Building with Blup\"})}),\" - Blup's Role in App Development\"]}),/*#__PURE__*/e(\"p\",{children:\"Blup tool, with its user-friendly interface and powerful capabilities, stands out as an ideal solution for developing applications in the shipping industry. Here\u2019s how Blup can be instrumental:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(55, 65, 81)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"14px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-line-height\":\"2em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Ease of Use\"}),\": One of the primary advantages of Blup is its simplicity and intuitiveness. Even those with minimal programming experience can navigate its interface to create functional and visually appealing apps.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"14px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-line-height\":\"2em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Flexibility with Flutter\"}),\": Built on the Flutter framework, Blup offers unparalleled flexibility. Flutter\u2019s cross-platform development capabilities mean you can develop an app that runs smoothly on iOS and Android with a single codebase.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"14px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-line-height\":\"2em\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Rapid Prototyping\"}),\": Blup enables quick prototyping, allowing businesses to develop and test their app ideas in a real-world environment rapidly. This particularly benefits the dynamic shipping industry, where market needs can change quickly.\"]})})]}),/*#__PURE__*/e(r,{href:\"https://www.blup.in/downloads\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{className:\"framer-image\",\"data-preset-tag\":\"img\",children:/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"702\",src:\"https://framerusercontent.com/images/CJV6WPDDtKUxEwXATT1nB4jp0.webp\",srcSet:\"https://framerusercontent.com/images/CJV6WPDDtKUxEwXATT1nB4jp0.webp?scale-down-to=512 512w,https://framerusercontent.com/images/CJV6WPDDtKUxEwXATT1nB4jp0.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/CJV6WPDDtKUxEwXATT1nB4jp0.webp 2048w\",style:{aspectRatio:\"2048 / 1405\"},width:\"1024\"})})}),/*#__PURE__*/t(\"p\",{children:[\"\uD83C\uDF1F \",/*#__PURE__*/e(\"strong\",{children:\"Download the Blup Tool now\"}),\" and join the revolution of streamlined, no-code app development. Your journey towards creating amazing apps with ease starts here!\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://www.blup.in/downloads\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"\uD83D\uDD17 Download Blup Tool\"})})}),/*#__PURE__*/e(\"p\",{children:'Introduce readers to our Flutter-based app builder \"Blup\" and encourage them to download and explore its features for building interactive Flutter apps effortlessly.'})]});export const richText23=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"Resources\"}),/*#__PURE__*/e(\"p\",{children:\"The following resources might help when adding interactivity to your app.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(r,{href:\"https://docs.flutter.dev/cookbook/gestures\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Gestures\"})}),\", \",/*#__PURE__*/e(\"br\",{}),\"a section in the \",/*#__PURE__*/e(r,{href:\"https://docs.flutter.dev/cookbook\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Flutter cookbook\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(r,{href:\"https://docs.flutter.dev/ui#handling-gestures\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Handling gestures\"})}),/*#__PURE__*/e(\"br\",{}),\"How to create a button and make it respond to input.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(r,{href:\"https://docs.flutter.dev/ui/interactivity/gestures\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Gestures in Flutter\"})}),/*#__PURE__*/e(\"br\",{}),\"A description of Flutter\u2019s gesture mechanism.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Flutter API documentation\"})}),/*#__PURE__*/e(\"br\",{}),\"Reference documentation for all of the Flutter libraries.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Wonderous app \",/*#__PURE__*/e(r,{href:\"https://wonderous.app//web\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"running app\"})}),\", \",/*#__PURE__*/e(r,{href:\"https://github.com/gskinnerTeam/flutter-wonderous-app\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"repo\"})}),\"Flutter showcase app with a custom design and engaging interactions.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(r,{href:\"https://www.youtube.com/watch?v=dkyY9WCGMi0\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Flutter\u2019s Layered Design\"})}),\" (video)\",/*#__PURE__*/e(\"br\",{}),\"This video includes information about state and stateless widgets. Presented by Google engineer, Ian Hickson.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Resources to Get Started\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgba(0, 0, 0, 0.8)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://www.blup.in/blogs\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Blup \u2014 Flutter Learning Roadmap\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://flutter.dev/community\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Flutter Community\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://stackoverflow.com/questions/tagged/flutter\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Stack Overflow \u2014 Flutter\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://www.reddit.com/r/FlutterDev/comments/110037e/active_discord_communities/\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"r/FlutterDev on Reddit\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://discord.com/invite/rflutterdev\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Flutter Discord Channel\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://github.com/flutter\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"GitHub \u2014 Flutter\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.003em\",\"--framer-line-height\":\"32px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(36, 36, 36)\",\"--framer-text-decoration\":\"none\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://medium.com/flutter\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Medium \u2014 Flutter\"})})})})]})]});export const richText24=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Introduce Blup Services as an end-to-end solution for readers' app development needs. Explain how Blup Services specializes in building custom Flutter apps, delivering them 10x faster and more cost-effectively than traditional methods.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"540\",src:\"https://framerusercontent.com/images/d7Yt5AIUNW7JqXSFJQ0c0v9RTs.png\",srcSet:\"https://framerusercontent.com/images/d7Yt5AIUNW7JqXSFJQ0c0v9RTs.png?scale-down-to=512 512w,https://framerusercontent.com/images/d7Yt5AIUNW7JqXSFJQ0c0v9RTs.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/d7Yt5AIUNW7JqXSFJQ0c0v9RTs.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/d7Yt5AIUNW7JqXSFJQ0c0v9RTs.png 3840w\",style:{aspectRatio:\"3840 / 1080\"},width:\"1920\"}),/*#__PURE__*/e(\"h3\",{children:\"Discover the Advantages of Blup Services:\"}),/*#__PURE__*/e(\"p\",{children:\"Customized Flutter Apps: Unlock tailored solutions designed to address unique app needs and align with business goals.\"}),/*#__PURE__*/e(\"p\",{children:\"Swift Development: Experience accelerated project timelines, resulting in prompt delivery of top-tier applications.\"}),/*#__PURE__*/e(\"p\",{children:\"Cost Savings: Benefit from an optimized development process that maximizes efficiency, ultimately reducing overall project expenses.\"}),/*#__PURE__*/e(\"p\",{children:\"Encourage readers to explore Blup Services for their app development endeavors. Take the next step by contacting Blup Services for a consultation or to delve deeper into the comprehensive range of services available.\"})]});export const richText25=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"In conclusion, \"}),/*#__PURE__*/e(\"p\",{children:\"Mastering gestures in Flutter is crucial for creating engaging and user-friendly mobile applications. In this comprehensive guide, we delve into various aspects of gesture recognition and implementation in Flutter, providing you with the knowledge and tools to enhance your app's interactivity.\"}),/*#__PURE__*/e(\"p\",{children:\"In this blog, we cover essential topics such as tap gestures, drag gestures, multi-touch gestures, and utilizing the Gesture Detector widget. By mastering these techniques, you'll be able to create intuitive and dynamic user interfaces that elevate the user experience of your Flutter apps.\"}),/*#__PURE__*/e(\"p\",{children:\"We emphasize the importance of understanding gesture detection and disambiguation, ensuring smooth and accurate user interactions. With practical examples and step-by-step instructions, you'll gain a deep understanding of how to incorporate gestures seamlessly into your Flutter projects.\"}),/*#__PURE__*/e(\"p\",{children:\"Moreover, we provide troubleshooting tips and practice tasks to help you overcome common challenges and refine your skills in gesture recognition. Whether you're a beginner or an experienced developer, this blog equips you with the expertise needed to master gestures in Flutter and take your app development skills to the next level.\"}),/*#__PURE__*/t(\"p\",{children:[\"Ready to take your Flutter app development skills to the next level? \",/*#__PURE__*/e(r,{href:\"https://www.blup.in/\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Download\"})}),' \"',/*#__PURE__*/e(r,{href:\"https://www.blup.in/downloads\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Blup\"})}),\"\\\" today and explore its powerful features for building gesture-rich Flutter apps effortlessly. Don't forget to check out our curated list of Flutter learning resources and stay tuned for more insightful blogs in the \",/*#__PURE__*/e(r,{href:\"https://www.blup.in/blogs\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Flutter Learning Roadmaps Series\"})}),\". Let's embark on this journey of mastering gestures in Flutter together!\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});export const richText26=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"In today's fast-paced digital world, user interaction is paramount to the success of any mobile application. As developers, our goal is not just to create static interfaces but to craft dynamic experiences that captivate and engage users at every touchpoint. Enter Flutter \u2013 Google's UI toolkit for building natively compiled applications across mobile, web, and desktop from a single codebase.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"432\",src:\"https://framerusercontent.com/images/n2s6OqQBdnDIng8cPX5izPiAvPQ.png\",srcSet:\"https://framerusercontent.com/images/n2s6OqQBdnDIng8cPX5izPiAvPQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/n2s6OqQBdnDIng8cPX5izPiAvPQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/n2s6OqQBdnDIng8cPX5izPiAvPQ.png 1913w\",style:{aspectRatio:\"1913 / 864\"},width:\"956\"}),/*#__PURE__*/e(\"p\",{children:\"Welcome to the latest installment of our Flutter Learning Roadmap Series, where we dive deep into mastering interactivity in Flutter app development. In this blog, we'll explore how to elevate your Flutter apps by adding intuitive and responsive interactions that keep users coming back for more.\"}),/*#__PURE__*/e(\"h3\",{children:\"Key Questions to Consider:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How can we leverage Flutter's capabilities to create seamless user interactions?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What are the best practices for incorporating interactivity into Flutter apps?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How do interactive elements contribute to a more engaging user experience?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What tools and techniques can we utilize to enhance user engagement in our Flutter projects?\"})})]}),/*#__PURE__*/e(\"p\",{children:\"This blog post is part of our ongoing Flutter Learning Roadmap Series, designed to provide comprehensive insights into various aspects of Flutter app development. Join us as we unravel the secrets to creating captivating user experiences and unlocking the full potential of Flutter's interactive capabilities.\"})]});export const richText27=/*#__PURE__*/t(o.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"In the realm of Flutter app development, mastering the dichotomy between stateful and stateless widgets is pivotal. These widgets, fundamental to crafting captivating user interfaces, hold distinct roles in enhancing interactivity and responsiveness.\"}),/*#__PURE__*/e(\"h3\",{children:\"Understanding Stateful and Stateless Widgets\"}),/*#__PURE__*/e(\"p\",{children:\"At the heart of Flutter's UI architecture lies the concept of stateful and stateless widgets. But what delineates one from the other?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Stateless Widgets:\"}),\" Let's commence with the simpler counterpart. Stateless widgets maintain a perpetual state throughout their lifecycle. They remain impervious to external influences, steadfast in their appearance and behavior. Picture them as immutable entities within your UI repertoire. Examples of \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/StatelessWidget-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"stateless widgets\"})}),\" include\",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/Icon-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\" Icons\"})}),\",\",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/IconButton-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\" IconButtons\"})}),\", and \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/Text-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Text\"})}),\" elements, steadfast in their form and function.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Stateful Widgets:\"}),\" Conversely, \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/StatefulWidget-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"stateful widgets\"})}),\" inject dynamism into your app's interface. These widgets possess the remarkable ability to adapt their appearance or behavior in response to various stimuli, be it user interactions or incoming data streams. They serve as the catalysts behind interactive components like \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/Checkbox-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"checkboxes\"})}),\", \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/Slider-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"sliders\"})}),\", \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/InkWell-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"InkWell\"})}),\", \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/Form-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"forms\"})}),\", and \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/material/TextField-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"TextField\"})}),\". Unlike their stateless counterparts, stateful widgets harbor intrinsic flexibility, enabling them to evolve with the changing tides of user engagement.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Example:\"})}),/*#__PURE__*/e(\"p\",{children:\"Let's illustrate the dichotomy with a practical example\u2014a to-do list application. Each item on the list warrants representation through widgets. Here's how you might integrate stateful and stateless widgets into this scenario:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Stateless Widget:\"}),\" Visualize the individual to-do items rendered through a stateless widget. Since these items maintain a static demeanor, impervious to external stimuli, a stateless widget serves as the ideal conduit. Its steadfast nature ensures uniformity across the interface, devoid of fluctuations induced by user interactions.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Stateful Widget:\"}),\" Now, let's infuse interactivity into the mix. Imagine augmenting each to-do item with a checkbox, empowering users to mark tasks as completed. Herein lies the domain of stateful widgets. The checkbox widget, imbued with the capacity to toggle between checked and unchecked states, necessitates a dynamic framework. As users interact with the checkbox, its \",/*#__PURE__*/e(r,{href:\"https://api.flutter.dev/flutter/widgets/State-class.html\",motionChild:!0,nodeId:\"dlsksZJDV\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"state\"})}),\" undergoes metamorphosis, a testament to the versatility of stateful widgets in facilitating user engagement.\"]})})]})]});\nexport const __FramerMetadata__ = {\"exports\":{\"richText16\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText25\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText7\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText4\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText12\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText23\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText9\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText8\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText14\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText6\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText18\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText27\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText11\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText5\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText19\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText1\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText15\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText20\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText22\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText10\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText21\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText13\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText24\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText26\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText17\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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",
  "names": ["richText", "u", "x", "p", "ComponentPresetsConsumer", "t", "Youtube", "Link", "motion", "richText1", "CodeBlock_default", "richText2", "richText3", "richText4", "richText5", "richText6", "richText7", "richText8", "richText9", "richText10", "richText11", "richText12", "richText13", "richText14", "richText15", "richText16", "richText17", "richText18", "richText19", "richText20", "richText21", "richText22", "richText23", "richText24", "richText25", "richText26", "richText27", "__FramerMetadata__"]
}
