Flutter plugin that allows you to showcase your features on iOS and Android. ๐Ÿ‘Œ๐Ÿ”๐ŸŽ‰

Overview

ShowCaseView

CI showcaseview

A Flutter package allows you to Showcase/Highlight your widgets step by step.

It is inspired from Fluttery's Flutter challange.

Preview

The example app running in Android

Installing

  1. Add dependency to pubspec.yaml

    Get the latest version in the 'Installing' tab on pub.dev

dependencies:
    showcaseview: <latest-version>
  1. Import the package
import 'package:showcaseview/showcaseview.dart';
  1. Adding a ShowCaseWidget widget.
ShowCaseWidget(
  builder: Builder(
    builder : (context) ()=> Somewidget()
  ),
),
  1. Adding a Showcase widget.
GlobalKey _one = GlobalKey();
GlobalKey _two = GlobalKey();
GlobalKey _three = GlobalKey();

...

Showcase(
  key: _one,
  title: 'Menu',
  description: 'Click here to see menu options',
  child: Icon(
    Icons.menu,
    color: Colors.black45,
  ),
),

Some more optional parameters

Showcase(
  key: _two,
  title: 'Profile',
  description: 'Click here to go to your Profile',
  disableAnimation: true,
  shapeBorder: CircleBorder(),
  showArrow: false,
  slideDuration: Duration(milliseconds: 1500),
  tooltipColor: Colors.blueGrey,
  child: ...,
),
  1. Using a Showcase.withWidget widget.
Showcase.withWidget(
  key: _three,
  cHeight: 80,
  cWidth: 140,
  shapeBorder: CircleBorder(),
  container: Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: <Widget>[
      ...
    ],
  ),
  child: ...,
),
  1. Starting the ShowCase
someEvent(){
    ShowCaseWidget.startShowCase(context, [_one, _two, _three]);
}
  1. onFinish method for ShowCase
ShowCaseWidget(
  onFinish: () {
    // Your code goes here
  },
  builder: Builder(
    builder : (context) ()=> Somewidget()
  ),
),

If you want to start the ShowCaseView as soon as your UI built up then use below code.

WidgetsBinding.instance.addPostFrameCallback((_) =>
        ShowCaseWidget.startShowCase(context, [_one, _two, _three]));

How to use

Check out the example app in the example directory or the 'Example' tab on pub.dartlang.org for a more complete example.

Getting Started

This project is a starting point for a Dart package, a library module containing code that can be shared easily across multiple Flutter or Dart projects.

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

License

Copyright ยฉ 2020, Simform Solutions
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Comments
  • Exception:BoxConstraints has NaN values

    Exception:BoxConstraints has NaN values

    Hi,My first Flutter APP is using showcaseview widget here is my code

    Row(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: <Widget>[
                  Showcase.withWidget(
                    key: _myBook,
                    width: 300,
                    height: 350,
                    container: Card(
                      child: Padding(
                        padding: const EdgeInsets.fromLTRB(8, 10, 8, 10),
                        child: Text('ๅฐ่ฟช้˜…่ฏป่ฟ‡็š„็ป˜ๆœฌ้ƒฝ\nไผšๅœจ่ฟ™้‡Œ็œ‹ๅˆฐๅ“ฆ!'),
                      ),
                    ),
                    child: Icon(Icons.favorite),
       )])
    

    ,But I got some trouble,the console print some log image

    please do me a favor, thanks a lot! below is the sdk version I'm using: image

    bug wontfix 
    opened by ShengjieGeng 22
  • Showcase highlight not correctly highlighting child widget on smartphone

    Showcase highlight not correctly highlighting child widget on smartphone

    Describe the bug image

    To Reproduce Steps to reproduce the behavior:

    1. Wrap FAB in Showcase widget
    2. Open on smartphone (Android A7 smartphone)
    3. See error (View attached image above)

    Expected behavior Highlight FloatingActionbutton

    Screenshots image

    Smartphone (please complete the following information):

    • Device: Samsung A7
    • OS: Android 8.1
    • Browser N/A

    Additional context Seems to work perfectly with no overlayPadding required, but for smartphone, it is WAY off.

    opened by keitheyre 13
  • Weird posiiton

    Weird posiiton

    Describe the bug I try show Showcase in showCupertinoModalBottomSheet but got weird position.

    void showNameModal(BuildContext context) { showCupertinoModalBottomSheet( expand: true, context: context, backgroundColor: mainBackgroundColor, builder: (contextModal) => ShowCaseWidget(builder: Builder(builder: (context) { WidgetsBinding.instance!.addPostFrameCallback((_) { if (education.isEducationIndex == 9) ShowCaseWidget.of(context)!.startShowCase([education.ten]); }); return SingleChildScrollView( child: SafeArea( child: CustomModalBottomSheet( title: 'myCompanies/add_company/company_name'.tr, onAccept: () => navigation.back(context: context), rightWidget: Showcase( onTargetClick: () => showCasePress(context: context), onToolTipClick: () => showCasePress(context: context), disposeOnTap: true, key: education.eleven, title: 'education/saveName'.tr, description: 'education/saveNameBody'.tr, child: Icon(Icons.done, color: greenColor), ), child: Column( children: [ Showcase( onTargetClick: () => showCasePress(context: context), onToolTipClick: () => showCasePress(context: context), disposeOnTap: true, key: education.ten, title: 'education/name'.tr, description: 'education/nameShortBody'.tr, child: TextFieldBorderAll( controller: shortNameCtrl, label: 'myCompanies/add_company/short_name'.tr, ), ), SizedBox(height: 22), CustomTextArea( controller: fullNameCtrl, label: 'myCompanies/add_company/full_name'.tr, ), ], ), ), ), ); }))); }

    Simulator Screen Shot - iPhone X - 2021-09-09 at 17 45 48 Simulator Screen Shot - iPhone X - 2021-09-09 at 17 45 46

    bug 
    opened by romreed 12
  • I keep getting this error when using ShowCaseView: The method 'findAncestorStateOfType' was called on null.

    I keep getting this error when using ShowCaseView: The method 'findAncestorStateOfType' was called on null.

    Describe the bug A clear and concise description of what the bug is. I have tried different ways, but I keep getting the following errors:

    Performing hot reload... Syncing files to device iPhone 11 Pro Max... [VERBOSE-2:shell.cc(210)] Dart Unhandled Exception: NoSuchMethodError: The method 'findAncestorStateOfType' was called on null. Receiver: null Tried calling: findAncestorStateOfType(), stack trace: #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5) #1 Overlay.of (package:flutter/src/widgets/overlay.dart:258:19) #2 _OverlayBuilderState.addToOverlay (package:showcaseview/layout_overlays.dart:165:13) #3 _OverlayBuilderState.showOverlay (package:showcaseview/layout_overlays.dart:157:7) #4 _OverlayBuilderState.syncWidgetAndOverlay (package:showcaseview/layout_overlays.dart:183:7) #5 _OverlayBuilderState.reassemble. (package:showcaseview/layout_overlays.dart:137:57) #6 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15) #7 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1063:9) #8 SchedulerBinding.scheduleWarmUpFrame. (package:flut<โ€ฆ>

    Additional context

    From the error message we can see something wrong with showcaseview overlay, but I can't find ways to solve it. (I have searched on google and stackoverflow, but no results.

    I closely followed the example code and also searched on other use case to apply this plugin, my code is similar like this one: https://stackoverflow.com/questions/60930636/how-can-i-use-show-case-view-in-flutter

    The plugin is working (although it's not working as I expected, that can be feature suggestions, but as least it's working as the example shows). However I always get this error complain every time I start or hot reload.

    When I remove all the code related with this plugin, I don't get any error complain, so it's definitely the plugin issue.

    How can I solve this? does any of other people get same error like i do? is it something wrong with the plugin? thank you!

    I am using the latest version of flutter and the plugin, every thing's version is the latest, I always upgrade as soon as I can.

    more-info-required 
    opened by lutang123 11
  • While using ShowCase widget, not scrolling to respective widget when its not visible.

    While using ShowCase widget, not scrolling to respective widget when its not visible.

         Showcase(
                key: beatGlobalKey,
                description: StringResource.beatShowCaseDescp,
                showcaseBackgroundColor: ColorResource.BLUE15447a,
                titleTextStyle: TextStyle(
                    color: ColorResource.WHITE16dfff,
                    fontFamily: Font.ProximaNovaBold.value),
                descTextStyle: TextStyle(
                    color: ColorResource.WHITE16dfff,
                    fontFamily: Font.ProximaNovaRegular.value),
                shapeBorder: CircleBorder(),
                showArrow: true,
                spotlightPadding: EdgeInsets.all(10),
                child: PostActionButton(
                  !this.widget.post.isLike
                      ? ImageResource.unlikedIcon
                      : ImageResource.likedIcon,
                  'Beat',
                  tapFunction: _onTapLikePost,
                  titleColor: !this.widget.post.isLike
                      ? ColorResource.BLACK2f2f2f
                      : ColorResource.BLUE16dfff,
                ),
              ),
    

    when i used the above code, showcase is not navigating to respective screen even in botttom, and overlay also not coming could anyone help with this? Thanks in adavance !

    opened by sivaram16 11
  • Feature/scroll active showcase into view

    Feature/scroll active showcase into view

    Users expect that the showcased widget is brought into view in case it is not visible (e.g. #62).

    This PR ensures that the current active Showcase is in view:

    Peek 2022-02-25 03-39

    opened by RobertHeim 10
  • AppBar is pushing down the showcases

    AppBar is pushing down the showcases

    I have the different classes loaded in this screen. From top to bottom I have the AppBar, the container where I have the showcases within a Scaffold and the bottom menu.

    When I show the showcases they are not positioned properly. Do I need to specify something else? I also used a GlobalKey from main but it still have the same margin.

    Screenshot_1633795666 Screenshot_1633795669

    class _RentsState extends State<Rents> {
      GlobalKey _one = GlobalKey();
      GlobalKey _two = GlobalKey();
    
      @override
      Widget build(BuildContext context) {
    
        return ShowCaseWidget(
          onComplete: (index, key) {
            if (index == 4)
              SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light
                  .copyWith(
                      statusBarIconBrightness: Brightness.dark,
                      statusBarColor: Colors.white));
          },
          builder: Builder(
            builder: (context) => Scaffold(
              backgroundColor: Colors.white,
              body: SafeArea(
                bottom: false,
                child: Column(
                  children: <Widget>[
                    SizedBox(
                      height: 20,
                    ),
                    Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: <Widget>[
                        Row(
                          crossAxisAlignment: CrossAxisAlignment.center,
                          children: [
                            Expanded(
                              child: Container(
                                padding: const EdgeInsets.only(left: 10, right: 8),
                                child: Container(
                                  padding: const EdgeInsets.all(12),
                                  decoration: BoxDecoration(
                                      color: Color(0xffF9F9F9),
                                      border: Border.all(
                                          color: Color(0xffF3F3F3), width: 2),
                                      borderRadius: BorderRadius.circular(8)),
                                  child: Row(
                                    children: <Widget>[
                                      Expanded(
                                        child: Row(
                                          children: <Widget>[
                                            Showcase(
                                              key: _one,
                                              description:
                                                  'Tap to see menu options',
                                              child: Icon(
                                                Icons.menu,
                                                color:
                                                    Theme.of(context).primaryColor,
                                              ),
                                            ),
                                            SizedBox(
                                              width: 10,
                                            ),
                                            Text(
                                              'Search email 2',
                                              style: TextStyle(
                                                  color: Colors.black45,
                                                  fontSize: 16,
                                                  letterSpacing: 0.4),
                                            ),
                                            Spacer(),
                                            Icon(
                                              Icons.search,
                                              color: Color(0xffADADAD),
                                            ),
                                          ],
                                        ),
                                      ),
                                    ],
                                  ),
                                ),
                              ),
                            ),
                            Showcase(
                              overlayPadding: EdgeInsets.all(5),
                              key: _two,
                              title: 'Profile',
                              description:
                                  'Tap to see profile which contains user\'s name, profile picture, mobile number and country',
                              contentPadding: EdgeInsets.all(8.0),
                              showcaseBackgroundColor:
                                  Theme.of(context).primaryColor,
                              textColor: Colors.white,
                              shapeBorder: CircleBorder(),
                              child: Container(
                                padding: EdgeInsets.all(5),
                                width: 45,
                                height: 45,
                                decoration: BoxDecoration(
                                    shape: BoxShape.circle,
                                    color: Theme.of(context).primaryColor),
                                child: Image.asset('assets/simform.png'),
                              ),
                            ),
                            SizedBox(
                              width: 12,
                            )
                          ],
                        ),
                        SizedBox(
                          height: 10,
                        ),
                        Container(
                          padding: const EdgeInsets.only(left: 16, top: 4),
                          child: Text(
                            'PRIMARY',
                            style: TextStyle(
                              color: Colors.black,
                              fontSize: 15,
                              fontWeight: FontWeight.bold,
                            ),
                          ),
                        ),
                      ],
                    ),
                    Padding(padding: EdgeInsets.only(top: 8)),
                  ],
                ),
              ),
              floatingActionButton: FloatingActionButton(
                backgroundColor: Theme.of(context).primaryColor,
                onPressed: () {
                  setState(() {
                    ShowCaseWidget.of(context)!.startShowCase([_one, _two]);
                  });
                },
                child: Icon(
                  Icons.add,
                ),
              ),
            ),
          ),
        );
      }
    
    opened by erperejildo 9
  • Wrong size/positions in Flutter Web when not

    Wrong size/positions in Flutter Web when not "full-screen"

    Describe the bug In Flutter Web, when the app is not exactly the same size as the browser window, ToolTips/Descriptions have wrong positions and size and might even move out of the visible area.

    To Reproduce Wrap the MaterialApp in some padding and/or center it with a fixed size.

    import 'package:flutter/material.dart';
    import 'package:showcaseview/showcaseview.dart';
    
    void main() {
      runApp(const MyApp());
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({super.key});
    
      // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
        return Center(
          child: Container(
            width: 600,
            padding: const EdgeInsets.all(20),
            child: const MaterialApp(
              title: 'Showcase Web Problems',
              home: MyHomePage(title: 'Showcase Problems on Web'),
            ),
          ),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      const MyHomePage({super.key, required this.title});
      final String title;
    
      @override
      State<MyHomePage> createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      final key1 = GlobalKey();
      final key2 = GlobalKey();
      final key3 = GlobalKey();
    
      @override
      Widget build(BuildContext context) {
        return ShowCaseWidget(
          builder: Builder(
            builder: (ctx) => Scaffold(
              appBar: AppBar(
                title: Text(widget.title),
              ),
              body: Center(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: <Widget>[
                    Showcase(
                      key: key1,
                      description: "Showcase Item 1",
                      child: const Text("Item 1"),
                    ),
                    Showcase(
                      key: key2,
                      description: "Showcase Item 2",
                      child: const Text("Item 2"),
                    ),
                    Showcase(
                      key: key3,
                      description: "Showcase Item 3",
                      child: const Text("Item 3"),
                    ),
                  ],
                ),
              ),
              floatingActionButton: FloatingActionButton(
                onPressed: () {
                  ShowCaseWidget.of(ctx).startShowCase([key1, key2, key3]);
                },
                tooltip: 'Let the showcase begin',
                child: const Icon(Icons.question_mark),
              ),
            ),
          ),
        );
      }
    }
    

    Expected behavior Everything should work as you would expect, i.e. with right positions and sizes.

    Screenshots ShowcaseWebProblem

    Additional context For positioning, the offset of the MaterialApp has to be subtracted For sizing, MediaQuery.of(context).size should be replaced with the size of the MaterialApp

    I will create a PR for a possible fix, though I ask for your mercy since it will be my first.

    invalid 
    opened by aw31n 8
  • let user possibility to interact directly with target widget

    let user possibility to interact directly with target widget

    Is your feature request related to a problem? Please describe. No.

    Describe the solution you'd like My targeted widget has two buttons, one for accepting the other for refusing. I would be nice, if you can propagate gesture event to the target children for letting the user ability to click on those buttons and managing the showcase flow manually? Currently onTap from TargetWidget handles the event and then stops propagating.

    enhancement 
    opened by Dekhnar 8
  • Can't use Showcase on Bottom Navigation Items

    Can't use Showcase on Bottom Navigation Items

    Describe the bug Page crashes when I wrap Showcase around BottomNavigationItem icons. image

    To Reproduce Simply wrap Showcase around the Icon image

    Error The following NoSuchMethodError was thrown building IconTheme(color: Color(0x8a000000), size: 24.0): The getter 'activeWidgetIds' was called on null. Receiver: null Tried calling: activeWidgetIds

    The relevant error-causing widget was: BottomNavigationBar file:///E:/_project/flutter/upper_bunk_bro_frontend/lib/routes/tabs/HomePage.dart:92:30 When the exception was thrown, this was the stack: #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5) #1 ShowCaseWidget.activeTargetWidget (package:showcaseview/showcase_widget.dart:51:10) #2 _ShowcaseState.showOverlay (package:showcaseview/showcase.dart:171:43) #3 _ShowcaseState.didChangeDependencies (package:showcaseview/showcase.dart:164:5) #4 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4653:11)

    Additional context Android simulator.

    bug 
    opened by Zony-Zhao 8
  • Migrated null safety

    Migrated null safety

    Description

    I propose this pull request to migrate this plugin to null safety as it is the way to go now that Flutter 2 has been released.

    Here are the changes I introduced:

    • Update SDK dependency version to 2.12.0+
    • Run dart migrate on existing code to remove unsafe nulls (for the package & example)
    • Add a new version (0.2.0) to the changelog (as recommended)

    Please check everything twice!

    Testing

    • [x] Tested it manually on a Android emulator

    Related tickets

    Closes #93

    enhancement 
    opened by nilsreichardt 8
  • This widget has been unmounted, so the State no longer has a context

    This widget has been unmounted, so the State no longer has a context

    [DartError] This widget has been unmounted, so the State no longer has a context (and should be considered defunct).Consider canceling any active work during "dispose" or using the "mounted" getter to determine if the State is still active.; #0 State.context. (package:flutter/src/widgets/framework.dart:935:9) #1 State.context (package:flutter/src/widgets/framework.dart:941:6) #2 _OverlayBuilderState.addToOverlay (package:showcaseview/src/layout_overlays.dart:172:47) #3 _OverlayBuilderState.showOverlay (package:showcaseview/src/layout_overlays.dart:164:7) #4 _OverlayBuilderState.syncWidgetAndOverlay (package:showcaseview/src/layout_overlays.dart:195:7) #5 _OverlayBuilderState.reassemble. (package:showcaseview/src/layout_overlays.dart:144:39) #6 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1175:15) #7 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1113:9) #8 SchedulerBinding.scheduleWarmUpFrame. (package:flutter/src/scheduler/binding.dart:881:7) #9 Timer._createTimer. (dart:async-patch/timer_patch.dart:18:15) #10 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398:19) #11 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429:5) #12 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)

    Happens when you try switching between screens very fast and ShowCaseWidget.of(context).startShowCase doesn't have time to start showing the showcase

    opened by kirill-21 3
  • Custom position of tooltip

    Custom position of tooltip

    Hello, I want to customize the position of my custom tooltip when using Showcase.withWidget().

    Currently, my widget takes position automatically as follows. I want to place it to the center right of the target. Any tips?

    Screenshot 2022-12-07 at 9 11 50 AM
    opened by rmahmadkhan 0
  • Take in account view insets (such as keyboard)

    Take in account view insets (such as keyboard)

    Take in account the view insets of the device, such as the keyboard that is up, so that we can correctly determine if the widget should be on top or below. If you're trying to highlight something that is at the bottom of the screen and the keyboard is up, it will try to render it below the widget, which would be under the keyboard.

    By taking in account view insets we can assure that widgets that are sticky to the bottom get correctly highlighted when the keyboard is up.

    To test this all you need to do is make a widget sticky to the bottom of your screen, summon the keyboard and then showcase the sticky widget. You'll see that everything is blacked out except the sticky widget, but the arrow and text message will be invisible as it's below the keyboard.

    opened by Cellaryllis 1
  • Provide a callback to return the tooltip position and the size of showcase item

    Provide a callback to return the tooltip position and the size of showcase item

    Is your feature request related to a problem? Please describe. For tooltip position: Currently my tooltip including arrow to highlighted the showcase item. But somehow in some situation the tooltip showing below the showcase item, and the arrow is pointing downward.

    For tooltip size: I placed two buttons on the tooltip which align to most right. When the showcase item is too small and positioned on left, the buttons seems a bit off when aligned to most right. Currently there's no way to know where I want to position the buttons.

    Describe the solution you'd like

    1. Provide a callback to return the tooltip position so that I able to rotate or flip the arrow
    2. Size of the showcase item so that can provide more customisation when creating custom tooltip
    more-info-required 
    opened by anderscheow 2
  • Feature/tip navigation: New optional navigation options for the Showcase() widget

    Feature/tip navigation: New optional navigation options for the Showcase() widget

    New feature to allow the developer to optionally enable the following features for each Showcase() widget:

    • Navigation icons (forward / back)
    • Counter / Pager to show where in the tutorial the user is
    • End icon that allows the user to end the tutorial early

    Features are off by default. Parameters are optional to avoid breaking old instances.

    Example Photo example-showcase-with-nav

    Showcase(
        key: _showcaseSettings,
        showTipCountIndex: true,
        showForwardBackNav: true,
        showEndIcon: true,
        description: ref.read(getMachineNavigationTipsProvider).getTipContent('settings_top'),
        child: Text(AppLocalizations.of(context)!.screenTitlesSettings, style: kTextStyleHeading2),
    )
    

    A developer could extend the Showcase() widget to pass their own default values.

    opened by mdrideout 1
Releases(2.0.0+1)
  • 2.0.0+1(Nov 2, 2022)

    What's Changed

    • release: :bookmark: version bump 1.1.8 to 2.0.0 by @HappyMakadiyaS in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/301
    • release: :bookmark: version bump 2.0.0 to 2.0.0+1 by @HappyMakadiyaS in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/302

    Full Changelog: https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/compare/2.0.0...2.0.0+1

    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Nov 2, 2022)

    What's Changed

    • Update README.md by @MehulKK in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/262
    • Fix a minor error in Readme file by @Hesham-Dev-LY in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/260
    • :sparkles: Fixes #216 feature added to enable/disable default child gโ€ฆ by @vatsaltanna in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/266
    • :sparkles: Fixes #216 feature added to enable/disable default child gโ€ฆ by @vatsaltanna in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/267
    • :bug: Fixes #206 Wrong calculation of left and right position of tooltip by @vatsaltanna in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/264
    • :bug: Fixes duplicate key found in example by @HappyMakadiyaS in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/278
    • Showcase description alignment by @Abu-muhab in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/292
    • :pencil: CHANGELOG.md and README.md update for PR #292 by @vatsaltanna in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/294
    • docs: ๐Ÿ“š pull_request_template.md file updated by @ShwetaChauhan18 in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/284
    • docs: ๐Ÿ“š CONTRIBUTING.md file updated by @ShwetaChauhan18 in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/285
    • fix: :bug: Tooltip right position issue by @vatsaltanna in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/297
    • :sparkles: Added smooth transition to tooltip (#268) by @HappyMakadiyaS in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/282
    • fix!: ๐Ÿ’ฅParameter changes of the Showcase and ShowCaseWidget class by @HappyMakadiyaS in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/296
    • docs: ๐Ÿ“š readme.md updated with property listing by @HappyMakadiyaS in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/299
    • feat: โœจ Added documentation comments to Showcase and ShowCaseWidget by @HappyMakadiyaS in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/298
    • fix: ๐Ÿ› logic update in tooltip_widget.dart by @HappyMakadiyaS in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/300

    New Contributors

    • @Hesham-Dev-LY made their first contribution in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/260
    • @Abu-muhab made their first contribution in https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/pull/292

    Full Changelog: https://github.com/SimformSolutionsPvtLtd/flutter_showcaseview/compare/1.1.8...2.0.0

    Source code(tar.gz)
    Source code(zip)
  • 1.1.8(Aug 8, 2022)

  • 1.1.4(Nov 26, 2021)

  • 1.1.3(Oct 28, 2021)

  • 1.1.2(Oct 12, 2021)

  • 1.1.1(Aug 25, 2021)

  • 1.1.0(Jun 28, 2021)

  • 1.0.0(Apr 17, 2021)

  • 0.1.6(Aug 21, 2020)

A flutter plugin for bluebooth ble device connect and control.

flutter_blue_elves A flutter plugin witch includes platform-specific implementation code for Android and/or iOS to connect and control bluetooth ble d

PineappleOilPrince 29 Dec 30, 2022
Compare your design and current flutter layout.

pixel_perfect Put a semi-transparent image with the design over the top of the developed layout. It helps you to compare original design and current p

Kherel 45 Oct 24, 2022
Build basic Flutter layouts and widgets with the help of Row, Column, Stack, Expanded, Container, ListView, and GridView in Flutter.

Build basic Flutter layouts and widgets with the help of Row, Column, Stack, Expanded, Container, ListView, and GridView in Flutter.

Johannes Milke 28 Mar 30, 2022
Reorderable table, row, column, wrap, and sliver list that allow drag and drop of the children. https://pub.dartlang.org/packages/reorderables

** Kindly submit PR if you encounter issues and please make sure you're using stable channel releases. ** Maintaining open source software ain't easy.

Hansheng 575 Jan 5, 2023
A Flutter package that builds a list view and notifies when the widgets are on screen.

inview_notifier_list A Flutter package that builds a ListView or CustomScrollView and notifies when the widgets are on screen within a provided area.

Vamsi Krishna 511 Dec 21, 2022
๐ŸŽฅ Movie app which is developed using flutter and powered by tmdb.

Fluttery Filmy ?? Movie app which is developed using flutter and powered by tmdb. Preview Screenshot Listing Screen Detail Screen What's next? Movies

Bhavik Makwana 197 Dec 28, 2022
๐Ÿ” A custom refresh indicator for flutter.

Liquid Pull To Refresh A beautiful and custom refresh indicator for flutter highly inspired from Ramotion Pull Down to Refresh. Table of contents Inst

Ayush Agarwal 1.1k Dec 23, 2022
Flutter Infinite ListView - ListView with items that can be scrolled infinitely in both directions. Maintainer: @slightfoot

Flutter Infinite ListView ListView with items that can be scrolled infinitely in both directions. Quick Usage Replace your existing ListView with Infi

Flutter Community 257 Jan 8, 2023
scroll to index with fixed/variable row height inside Flutter scrollable widget

scroll-to-index This package provides the scroll to index mechanism for fixed/variable row height for Flutter scrollable widget. Getting Started In th

Quire 415 Jan 6, 2023
Easily make Flutter apps responsive. Automatically adapt UI to different screen sizes. Responsiveness made simple. Demo: https://gallery.codelessly.com/flutterwebsites/minimal/

Responsive Framework Responsiveness made simple Responsive Framework adapts your UI to different screen sizes automatically. Create your UI once and h

Codelessly 931 Dec 25, 2022
Effortless property builder for composing maintainable Flutter UI

Niku Effortless property builder for composing maintainable Flutter UI Why Creating UI in Flutter is easy. Its declarative enables developers to contr

SaltyAom 218 Dec 30, 2022
Device Preview For Flutter

Approximate how your app looks and performs on another device. Main features Preview any device from any device Change the device orientation Dynamic

null 3 May 14, 2022
NuConta Marketplace For Flutter

NuConta Marketplace telegram-cloud-document-1-5136388785566646724.mp4 Layout based in this drible project A Flutter project made using: Clean Dart tha

David Araujo 5 Nov 27, 2022
้€‚็”จไบŽ Flutter ็š„ไบ‘็‰‡่กŒไธบ้ชŒ่ฏๆ’ไปถ

flutter_yunpian_captcha ้€‚็”จไบŽ Flutter ็š„ไบ‘็‰‡่กŒไธบ้ชŒ่ฏๆ’ไปถ ๅฑๅน•ๆˆชๅ›พ ๅฟซ้€Ÿๅผ€ๅง‹ ๅฎ‰่ฃ… ็”จๆณ• ่Žทๅ– SDK ็‰ˆๆœฌ ๅˆๅง‹ๅŒ– SDK ๅผ€ๅง‹้ชŒ่ฏ ็›ธๅ…ณ้“พๆŽฅ ่ฎธๅฏ่ฏ ๅฑๅน•ๆˆชๅ›พ ๅฟซ้€Ÿๅผ€ๅง‹ ๅฎ‰่ฃ… ๅฐ†ๆญคๆทปๅŠ ๅˆฐๅŒ…็š„ pubspec.yaml ๆ–‡ไปถไธญ๏ผš dependencies: f

LeanFlutter 5 Mar 16, 2021
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.

BubbleShowcase BubbleShowcase is a small but powerful flutter package that allows you to highlight specific parts of your app (to explain them to the

Hugo Delaunay 38 Oct 26, 2022
A Flutter package allows you to Showcase/Highlight your widgets step by step.๐Ÿ‘Œ๐Ÿ”๐ŸŽ‰

ShowCaseView A Flutter package allows you to Showcase/Highlight your widgets step by step. Preview Installing Add dependency to pubspec.yaml Get the l

Simform Solutions 1.1k Jan 2, 2023
A Flutter package allows you to Showcase/Highlight your widgets step by step.

ShowCaseView A Flutter package allows you to Showcase/Highlight your widgets step by step. Preview Installing Add dependency to pubspec.yaml Get the l

kirill 0 Dec 8, 2022
Todo app codelab - A simple UI for todo app to showcase Flutter features and core concepts

Codelab Todo App A simple todo app UI for to showcase Flutter and Dart core conc

Junior Medehou 3 May 12, 2022
Flutter plugin for accessing the NFC features on Android and iOS.

nfc_manager Flutter plugin for accessing the NFC features on Android and iOS. Note: This plugin depends on NFCTagReaderSession (requires iOS 13.0 or l

null 126 Jan 1, 2023
Flutter plugin that allows you to display multi image picker on iOS and Android. ๐Ÿ‘Œ๐Ÿ”๐ŸŽ‰

IMPORTANT: This repository has been archived and no longer mantained. As I don't have time anymore to work on the package it became very outdated. For

Radoslav Vitanov 898 Apr 29, 2021