{"id":13552029,"url":"https://github.com/rickywen911/custom_bubble_navigation_bar","last_synced_at":"2026-02-23T06:03:55.017Z","repository":{"id":41905431,"uuid":"245029255","full_name":"rickywen911/custom_bubble_navigation_bar","owner":"rickywen911","description":"A custom navigation bar with bubble click effect in Flutter","archived":false,"fork":false,"pushed_at":"2023-11-05T18:35:14.000Z","size":5696,"stargazers_count":221,"open_issues_count":3,"forks_count":50,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-26T04:41:44.998Z","etag":null,"topics":["flutter","navigationbar","ui"],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rickywen911.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-03-04T23:58:02.000Z","updated_at":"2025-12-18T21:04:06.000Z","dependencies_parsed_at":"2024-01-19T06:56:07.237Z","dependency_job_id":"6aa0888c-3809-4491-ad58-9e1019b28035","html_url":"https://github.com/rickywen911/custom_bubble_navigation_bar","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/rickywen911/custom_bubble_navigation_bar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rickywen911%2Fcustom_bubble_navigation_bar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rickywen911%2Fcustom_bubble_navigation_bar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rickywen911%2Fcustom_bubble_navigation_bar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rickywen911%2Fcustom_bubble_navigation_bar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rickywen911","download_url":"https://codeload.github.com/rickywen911/custom_bubble_navigation_bar/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rickywen911%2Fcustom_bubble_navigation_bar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29738524,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T04:51:08.365Z","status":"ssl_error","status_checked_at":"2026-02-23T04:49:15.865Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flutter","navigationbar","ui"],"created_at":"2024-08-01T12:01:57.729Z","updated_at":"2026-02-23T06:03:55.000Z","avatar_url":"https://github.com/rickywen911.png","language":"Dart","funding_links":[],"categories":["Dart"],"sub_categories":[],"readme":"# custom_navigation_bar\n\nA custom navigation bar with bubble click effect.\u003cbr\u003e\n\n\n[![pub package](https://img.shields.io/pub/v/custom_navigation_bar)](https://pub.dev/packages/custom_navigation_bar) \n[![License: MIT](https://img.shields.io/badge/license-MIT-purple.svg)](https://opensource.org/licenses/MIT)\n\u003ca href=\"https://github.com/rickywen911/custom_bubble_navigation_bar\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/rickywen911/custom_bubble_navigation_bar.svg?style=flat\u0026logo=github\u0026label=stars\" alt=\"Star on Github\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/rickywen911/custom_bubble_navigation_bar\"\u003e\u003cimg src=\"https://img.shields.io/github/forks/rickywen911/custom_bubble_navigation_bar.svg?style=flat\u0026logo=github\u0026label=fork\" alt=\"Star on Github\"\u003e\u003c/a\u003e\n\n\n## Overview\n\nThis project is inspired by this [post from Dribbble](https://dribbble.com/shots/7134849-Simple-Tab-Bar-Animation) and [The Boring Flutter Development Show, Ep. 35](https://www.youtube.com/watch?v=Qk_x9y_wGXQ)\n\nThis package gives you a cute bubble effect when you click on the navigation bar.\n\nDribbble:\u003cbr\u003e\n\u003cimg src=\"https://cdn.dribbble.com/users/2114584/screenshots/7134849/media/96e4a6002a476bad7bd809ac71e28698.gif\" width=\"400\"\u003e\n\nImplemented:\u003cbr\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/rickywen911/custom_bubble_navigation_bar/master/screenshot/6.gif\" width=\"300\"\u003e\n\n## Gallery\n\n\u003cdiv style=\"text-align: center\"\u003e\n    \u003ctable\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/rickywen911/custom_bubble_navigation_bar/master/screenshot/1.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e            \n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/rickywen911/custom_bubble_navigation_bar/master/screenshot/2.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e  \n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/rickywen911/custom_bubble_navigation_bar/master/screenshot/3.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e  \n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/rickywen911/custom_bubble_navigation_bar/master/screenshot/4.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e  \n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/rickywen911/custom_bubble_navigation_bar/master/screenshot/5.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e  \n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/rickywen911/custom_bubble_navigation_bar/master/screenshot/6.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e  \n            \u003ctr\u003e\n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/rickywen911/custom_bubble_navigation_bar/master/screenshot/7.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e  \n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/rickywen911/custom_bubble_navigation_bar/master/screenshot/8.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/rickywen911/custom_bubble_navigation_bar/master/screenshot/9.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003c/tr\u003e\n    \u003c/table\u003e\n\u003c/div\u003e\n\n## How to install\nAdd this to your package's pubspec.yaml file:\n```yaml\ndependencies:\n  custom_navigation_bar: lastest version\n```\n## Documentation\n\n### **Attention** \n**If you update from version under `0.6.0`, there are some breaking changes in the version `0.6.0`. The `icon` in `CustomNavigationBarItem` has changed from `IconData` to `Widget`**.\n\nold version\n```dart\nCustomNavigationBarItem(\n      {@required this.icon,\n      IconData selectedIcon,\n      this.selectedTitle,\n      this.unSelectedTitle,\n      this.badgeCount = 0,\n      this.showBadge = true})\n      : selectedIcon = selectedIcon ?? icon;\n\n  ///\n  /// The icon of the item\n  /// Typically the icon is an [Icon].\n  ///\n  final IconData icon;\n```\n\nnew version\n```dart\nCustomNavigationBarItem(\n      {@required this.icon,\n      Widget selectedIcon,\n      this.title,\n      Text selectedTitle,\n      this.badgeCount = 0,\n      this.showBadge = false})\n      : selectedIcon = selectedIcon ?? icon,\n        selectedTitle = selectedTitle ?? title;\n\n  ///\n  /// The icon of the item\n  /// Typically the icon is an [Icon].\n  ///\n\n  final Widget icon;      \n```\n\n\n### You can customize these attributes in the navigation bar.\u003cbr\u003e\n\n| Attributes        | Type | Description                                                                                                                                                                                                                                                                                                                            | Default |\n|-------------------| -------------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --------------- |\n| `scaleFactor`     | `double`   | scale factor for the icon scale animation.                                                                                                                                                                                                                                                                                             | 0.2 |\n| `elevation`       | `double` | The z-coordinate of this CustomNavigationBar                                                                                                                                                                                                                                                                                           | 8.0 |\n| `items`           | `List` | item data in CustomNavigationBar                                                                                                                                                                                                                                                                                                       | required |\n| `selectedColor`   | `Color` | [Color] when [CustomNavigationBarItem] is selected                                                                                                                                                                                                                                                                                     | [blueAccent] |\n| `unSelectedColor` | `Color` | [Color] when [CustomNavigationBarItem] is not selected.                                                                                                                                                                                                                                                                                | grey[600] |\n| `onTap`           | `Function(int)` | callback function when item tapped                                                                                                                                                                                                                                                                                                     | null |\n| `currentIndex`    | `int` | current index of navigation bar.                                                                                                                                                                                                                                                                                                       | 0 |\n| `iconSize`        | `double` | size of icon. also represent the max radius of bubble effect animation.                                                                                                                                                                                                                                                                | 24.0 |\n| `backgroundColor` | `Color` | Background color of [CustomNavigationBar]                                                                                                                                                                                                                                                                                              | Colors.white |\n| `strokeColor`     | `Color` | stroke color                                                                                                                                                                                                                                                                                                                           | blueAccent |\n| `bubbleCurve`     | `Curve` | animation curve of bubble effect                                                                                                                                                                                                                                                                                                       | linear |\n| `scaleCurve`      | `Curve` | animation curve of scale effect                                                                                                                                                                                                                                                                                                        | linear |\n| `borderRadius`    | `Radius` | border radius of navigation bar                                                                                                                                                                                                                                                                                                        | Radius.zero |\n| `isFloating`      | `bool` | control if CustomNavigationBar is floating                                                                                                                                                                                                                                                                                             | false |\n| `blurEffect`      | `bool` | control if CustomNavigationBar show blur effect                                                                                                                                                                                                                                                                                        | false |\n| `opacity`         | `double` | control CustomNavigationBar blur effect opacity when `blurEffect` is true                                                                                                                                                                                                                                                              | 0.8 |\n| `brightness`           | `Brightness` | describes the contrast of a theme or color palette. If you want adaptive system display setting like iOS dark mode , you should set `Brightness.dark` or `Brightness.light` . if this attribute be set , other attributes with \"`*Color`\" (like `selectedColor`) will not take effect , should use `lightThemeData` or `darkThemeData` | null |\n| `lightThemeData` | `CustomNavigationBarThemeData` | when `brightness`is `light`,you can custom the light theme color if you want it                                                                                                                                                                                                                                                        | null |\n| `darkThemeData`         | `CustomNavigationBarThemeData` | when `brightness`is `dark`,you can custom the dark theme color if you want it                                                                                                                                                                                                                                                          | null |\n\n**Attention**: If you set ```isFloating``` to  ```true```, I would recommand you to set ```extendBody``` to ```true``` in ```Scaffold``` for a better performance.\n\nAnd for customize icon in the navigation bar, just put the icons you want in the ```CustomNavigationBarItem``` like this.\n```dart\nCustomNavigationBar(\n        ...\n        items: [\n          CustomNavigationBarItem(\n          icon: Icon(Icons.home),\n          title: Text(\"hello\"),\n        ),\n        CustomNavigationBarItem(\n          icon: Icon(Icons.shopping_cart),\n        ),\n        CustomNavigationBarItem(\n          icon: Icon(Icons.lightbulb_outline),\n        ),\n        CustomNavigationBarItem(\n          icon: Icon(Icons.search),\n        ),\n        CustomNavigationBarItem(\n          icon: Icon(Icons.account_circle),\n        ),\n        ],\n        ...\n      )\n```\n\nIf you want add notification badge, just use like this\n```dart\nCustomNavigationBar(\n        ...\n        items: [\n        CustomNavigationBarItem(\n          icon: Icon(Icons.home),\n          badgeCount: _badgeCounts[0],\n          showBadge: _badgeShows[0],\n        ),\n        CustomNavigationBarItem(\n          icon: Icon(Icons.shopping_bag),\n          badgeCount: _badgeCounts[1],\n          showBadge: _badgeShows[1],\n        ),\n        CustomNavigationBarItem(\n          icon: Icon(Icons.lightbulb_outline),\n          badgeCount: _badgeCounts[2],\n          showBadge: _badgeShows[2],\n        ),\n        CustomNavigationBarItem(\n          icon: Icon(Icons.search),\n          badgeCount: _badgeCounts[3],\n          showBadge: _badgeShows[3],\n        ),\n        CustomNavigationBarItem(\n          icon: Icon(Icons.account_circle),\n          badgeCount: _badgeCounts[4],\n          showBadge: _badgeShows[4],\n        ),\n      ],\n        ...\n      )\n```\n\nTo clear a badge, set `showBadge` to `false`\n\nIf you want add title under icon, just use like this\n```dart\nCustomNavigationBar(\n      iconSize: 30.0,\n      selectedColor: Color(0xff040307),\n      strokeColor: Color(0x30040307),\n      unSelectedColor: Color(0xffacacac),\n      backgroundColor: Colors.white,\n      items: [\n        CustomNavigationBarItem(\n          icon: Icon(Icons.home),\n          title: Text(\"Home\"),\n        ),\n        CustomNavigationBarItem(\n          icon: Icon(Icons.shopping_cart),\n          title: Text(\"Cart\"),\n        ),\n        CustomNavigationBarItem(\n          icon: Icon(Icons.lightbulb_outline),\n          title: Text(\"Explore\"),\n        ),\n        CustomNavigationBarItem(\n          icon: Icon(Icons.search),\n          title: Text(\"Search\"),\n        ),\n        CustomNavigationBarItem(\n          icon: Icon(Icons.account_circle),\n          title: Text(\"Me\"),\n        ),\n      ],\n      currentIndex: _currentIndex,\n      onTap: (index) {\n        setState(() {\n          _currentIndex = index;\n        });\n      },\n    );\n```\n\n\n## Example\nCheck example app for more details.\n\n## Contribute\nIssues and pull requests are welcomed!!\n\n### Future Plans\n- [x] Code format\n- [x] Make it more like native navigation bar in Flutter.\n- [x] Better documentation\n- [ ] More customizations!!\nAnd more...\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frickywen911%2Fcustom_bubble_navigation_bar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frickywen911%2Fcustom_bubble_navigation_bar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frickywen911%2Fcustom_bubble_navigation_bar/lists"}