{"id":16216745,"url":"https://github.com/skyost/bubbleshowcase","last_synced_at":"2025-10-22T22:32:05.319Z","repository":{"id":46580827,"uuid":"204161150","full_name":"Skyost/BubbleShowcase","owner":"Skyost","description":"BubbleShowcase is a small but power flutter package that allows you to highlight specific parts of your app to explain them to the user or to showcase your app new features.","archived":true,"fork":false,"pushed_at":"2021-12-08T05:23:57.000Z","size":242,"stargazers_count":41,"open_issues_count":9,"forks_count":25,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-28T17:51:01.186Z","etag":null,"topics":["dart","flutter","showcase","showcaseview","showcaseview-library"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/bubble_showcase","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/Skyost.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"Skyost","patreon":null,"open_collective":null,"ko_fi":"Skyost","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["paypal.me/Skyost","www.clipeee.com/creator/skyost","utip.io/skyost"]}},"created_at":"2019-08-24T13:30:37.000Z","updated_at":"2025-02-17T18:10:54.000Z","dependencies_parsed_at":"2022-07-20T06:13:28.122Z","dependency_job_id":null,"html_url":"https://github.com/Skyost/BubbleShowcase","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skyost%2FBubbleShowcase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skyost%2FBubbleShowcase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skyost%2FBubbleShowcase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skyost%2FBubbleShowcase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Skyost","download_url":"https://codeload.github.com/Skyost/BubbleShowcase/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243982177,"owners_count":20378604,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["dart","flutter","showcase","showcaseview","showcaseview-library"],"created_at":"2024-10-10T11:22:03.029Z","updated_at":"2025-10-22T22:32:04.966Z","avatar_url":"https://github.com/Skyost.png","language":"Dart","funding_links":["https://github.com/sponsors/Skyost","https://ko-fi.com/Skyost","paypal.me/Skyost","www.clipeee.com/creator/skyost","utip.io/skyost","https://paypal.me/Skyost"],"categories":[],"sub_categories":[],"readme":"# BubbleShowcase\n\n**BubbleShowcase** is a small but powerful flutter package that allows you to highlight\nspecific parts of your app (to explain them to the user for instance) or to showcase your app new features.\n\n![Preview](https://github.com/Skyost/BubbleShowcase/blob/master/screenshots/preview.gif)\n\n## Getting Started\n\nThis package is easy to use.\nTake a look at the following snippet (which is using [speech_bubble](https://pub.dev/packages/speech_bubble)) :\n\n```dart\nBubbleShowcase(\n  bubbleShowcaseId: 'my_bubble_showcase',\n  bubbleShowcaseVersion: 1,\n  bubbleSlides: [\n    RelativeBubbleSlide(\n      widgetKey: widgetToHighlightKey,\n      child: RelativeBubbleSlideChild(\n        direction: AxisDirection.right,\n        widget: SpeechBubble(\n          nipLocation: NipLocation.LEFT,\n          color: Colors.blue,\n          child: Padding(\n            padding: EdgeInsets.all(10),\n            child: Text(\n              'This is a new cool feature !',\n              style: TextStyle(color: Colors.white),\n            ),\n          ),\n        ),\n      ),\n    ),\n  ],\n  child: MyMainWidget(),\n);\n```\n\nIt creates a `BubbleShowcase` widget with only one `BubbleSlide`.\nThis slide will highlight the widget that holds the key `widgetToHighlightKey`.\nThe speech bubble will be placed on the right of the widget.\n\nBubbleShowcase is not limited to highlight a specific widget. You can also highlight a specific part of your app by its coordinates :\n\n```dart\nBubbleShowcase(\n  bubbleShowcaseId: 'my_bubble_showcase',\n  bubbleShowcaseVersion: 1,\n  bubbleSlides: [\n    AbsoluteBubbleSlide(\n      positionCalculator: (size) =\u003e Position(\n        top: 0,\n        right: 0,\n        bottom: 0,\n        left: 0,\n      ),\n      child: AbsoluteBubbleSlideChild(\n        positionCalculator: (size) =\u003e Position(\n          top: 0,\n          left: 0,\n        ),\n        widget: SpeechBubble(\n          nipLocation: NipLocation.LEFT,\n          color: Colors.blue,\n          child: Padding(\n            padding: EdgeInsets.all(10),\n            child: Text(\n              'This is the top left corner of your app.',\n              style: TextStyle(color: Colors.white),\n            ),\n          ),\n        ),\n      ),\n    ),\n  ],\n  child: MyMainWidget(),\n);\n```\n\nThis will display the speech bubble on the top left corner of your app.\n\n## Options\n\n### The showcase\n\nThe showcase is where everything begins. Let's see the available options :\n\n* `bubbleShowcaseId` The showcase identifier. Must be unique across the app as it is used as a saving mean; for instance when the showcase should not be reopened (**required**).\n* `bubbleShowcaseVersion` The showcase version. Increase it when you update the showcase, this allows to redisplay the it to the user if `doNotReopenOnClose` is set to `true` (**required**).\n* `doNotReopenOnClose` Whether this showcase should be reopened once closed.\n* `bubbleSlides` The slides to display (**required** \u0026 **must not be empty**).\n* `child` The widget to display below the slides. It should be your app main widget.\n* `counterText` The current slide counter text. `:i` targets the current slide number and `:n` targets the maximum slide number.\n* `showCloseButton` Whether to show a little close button on the top left of the slide.\n\n### The slides\n\nThe slides is what is highlighting a specific part of your app.\nThere are two main categories of positioning : _Absolute_ and _Relative_. Here is a little summary :\n\n| Position | Class name            | Use case                                                                                                  | Specific options                                                                    |\n|----------|-----------------------|-----------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|\n| Absolute | `AbsoluteBubbleSlide` | You want to position your slide according to a _x_, _y_ position on the screen and not a specific widget. | `positionCalculator` The function that calculates the slide position on the screen. |\n| Relative | `RelativeBubbleSlide` | You want to position your slide according to a specific widget.                                           | `widgetKey` The global key that the target widget is holding.                       |\n\nAll slides have these options in common :\n\n* `shape` The slide shape (available are `Rectangle`, `RoundedRectangle`, `Oval` and `Circle` but you can add a custom one by extending the `Shape` class).\n* `boxShadow` The slide box shadow (containing the color, the blur radius, the spread radius, ...).\n* `child` The slide child, see below (**required**).\n\n### The slides children\n\nSlides children are what are displayed according to what you are highlighting (it can be a speech bubble for example).\nThe same positioning system is also available for children :\n\n| Position | Class name                 | Use case                                                                                                                  | Specific options                                                                    |\n|----------|----------------------------|---------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|\n| Absolute | `AbsoluteBubbleSlideChild` | You want to position the child according to a _x_, _y_ position on the screen and not the highlighted part of the screen. | `positionCalculator` The function that calculates the child position on the screen. |\n| Relative | `RelativeBubbleSlideChild` | You want to position the child according to the highlighted zone.                                                         | `direction` Where to position the child compared to the highlighted zone.           |\n\nAll children have these options in common :\n\n* `widget` The widget to display (**required**).\n\nBut you have a lot of other options !\nDon't hesitate to check the [API Reference](https://pub.dev/documentation/bubble_showcase/latest/) or the [Github repo](https://github.com/Skyost/BubbleShowcase).\n\n## Contributions\n\nYou have a lot of options to contribute to this project ! You can :\n\n* [Fork it](https://github.com/Skyost/BubbleShowcase/fork) on Github.\n* [Submit](https://github.com/Skyost/BubbleShowcase/issues/new/choose) a feature request or a bug report.\n* [Donate](https://paypal.me/Skyost) to the developer.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskyost%2Fbubbleshowcase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskyost%2Fbubbleshowcase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskyost%2Fbubbleshowcase/lists"}