another_flushbar
v1.12.32A flexible widget for user notification. Customize your text, button, duration, animations and much more. For Android devs, it is made to replace Snackbars and Toasts.
Архив пакета: https://pubdev.letsnova.ru/api/archives/another_flushbar/1.12.32.tar.gz
dart pub add another_flushbarREADME
another_flushbar
Use this package if you need more customization when notifying your user. For Android developers, it is made to substitute toasts and snackbars. IOS developers, I don't know what you use there, but you will like it.
See the install instructions.
❤️ Support & Contact
Maintaining open-source takes time and energy.
If this library has helped you, consider supporting my work:
For questions, feedback, or collaboration:
Quick reference
Since customization requires a lot of properties, here is a quick cheatsheet:
| Property | What does it do |
|---|---|
| title | The title displayed to the user |
| titleColor | The title color displayed to the user |
| titleSize | The title size displayed to the user |
| message | The message displayed to the user. |
| messageColor | The message color displayed to the user. |
| messageSize | The message size displayed to the user. |
| titleText | Replaces [title]. Although this accepts a [widget], it is meant to receive [Text] or [RichText] |
| messageText | Replaces [message]. Although this accepts a [widget], it is meant to receive [Text] or [RichText] |
| icon | You can use any widget here, but I recommend [Icon] or [Image] as indication of what kind of message you are displaying. Other widgets may break the layout |
| shouldIconPulse | An option to animate the icon (if present). Defaults to true. |
| maxWidth | Used to limit Flushbar width (usually on large screens) |
| margin | Adds a custom margin to Flushbar |
| padding | Adds a custom padding to Flushbar. The default follows material design guide line |
| borderRadius | Adds a radius to specified corners of Flushbar. Best combined with [margin]. I do not recommend using it with [showProgressIndicator] or [leftBarIndicatorColor] |
| textDirection | [TextDirection.ltr] by default. [Directionality.of(context)] to know whether it would be [TextDirection.ltr] or [TextDirection.rtl] |
| borderColor | Adds a border to every side of Flushbar. I do not recommend using it with [showProgressIndicator] or [leftBarIndicatorColor] |
| borderWidth | Changes the width of the border if [borderColor] is specified |
| backgroundColor | Flushbar background color. Will be ignored if [backgroundGradient] is not null. |
| leftBarIndicatorColor | If not null, shows a left vertical bar to better indicate the humor of the notification. It is not possible to use it with a [Form] and I do not recommend using it with [LinearProgressIndicator]. |
| boxShadows | The shadows generated by Flushbar. Leave it null if you don't want a shadow. You can use more than one if you feel the need. Check this example |
| backgroundGradient | Flushbar background gradient. Makes [backgroundColor] be ignored. |
| mainButton | Use if you need an action from the user. [TextButton] is recommended here. |
| onTap | A callback that registers the user's click anywhere. An alternative to [mainButton] |
| duration | How long until Flushbar will hide itself (be dismissed). To make it indefinite, leave it null. |
| isDismissible | Determines if the user can swipe or click the overlay (if [routeBlur] > 0) to dismiss. It is recommended that you set [duration] != null if this is false. If the user swipes to dismiss or clicks the overlay, no value will be returned. |
| dismissDirection | FlushbarDismissDirection.VERTICAL by default. Can also be [FlushbarDismissDirection.HORIZONTAL] in which case both left and right dismiss are allowed. |
| flushbarPosition | Flushbar can be based on [FlushbarPosition.TOP] or on [FlushbarPosition.BOTTOM] of your screen. [FlushbarPosition.BOTTOM] is the default. |
| flushbarStyle | Flushbar can be floating or be grounded to the edge of the screen. If grounded, I do not recommend using [margin] or [borderRadius]. [FlushbarStyle.FLOATING] is the default |
| forwardAnimationCurve | The [Curve] animation used when show() is called. [Curves.easeOut] is default. |
| reverseAnimationCurve | The [Curve] animation used when dismiss() is called. [Curves.fastOutSlowIn] is default. |
| animationDuration | Use it to speed up or slow down the animation duration |
| showProgressIndicator | true if you want to show a [LinearProgressIndicator]. If [progressIndicatorController] is null, an infinite progress indicator will be shown |
| progressIndicatorController | An optional [AnimationController] when you want to control the progress of your [LinearProgressIndicator]. You are responsible for controlling the progress |
| progressIndicatorBackgroundColor | a [LinearProgressIndicator] configuration parameter. |
| progressIndicatorValueColor | a [LinearProgressIndicator] configuration parameter. |
| barBlur | Default is 0.0. If different than 0.0, blurs only Flushbar's background. To take effect, make sure your [backgroundColor] has some opacity. The greater the value, the greater the blur. |
| blockBackgroundInteraction | Determines if user can interact with the screen behind it. If this is false, [routeBlur] and [routeColor] will be ignored |
| routeBlur | Default is 0.0. If different than 0.0, creates a blurred overlay that prevents the user from interacting with the screen. The greater the value, the greater the blur. It does not take effect if [blockBackgroundInteraction] is false |
| routeColor | Default is [Colors.transparent]. Only takes effect if [routeBlur] > 0.0. Make sure you use a color with transparency e.g. Colors.grey[600].withOpacity(0.2). It does not take effect if [blockBackgroundInteraction] is false |
| userInputForm | A [TextFormField] in case you want a simple user input. Every other widget is ignored if this is not null. |
| onStatusChanged | a callback for you to listen to the different Flushbar status |
Quick tip
If you use a lot of those properties, it makes sense to make a factory to help with your Flushbar's base appearance. Things like shadows, padding, margins, text styles usually don't change within the app. Take a look at FlushbarHelper class and use it as an example.
We are on YouTube!
While studying Flutter I stumbled on two amazing tutorials on how to use Flushbar. Make sure you show those guys some love.
- A beginners tutorial by Matej Rešetár
- A more advanced usage by Javier González Rodríguez
Getting Started
The examples bellow were updated for version 1.3.0. Changes might have been made. See the changelog if any of the examples do not reflect Flushbar's current state.
The possibilities

A basic Flushbar
The most basic Flushbar uses only a message. Failing to provide it before you call show() will result in a runtime error.
Duration, if not provided, will create an infinite Flushbar, only dismissible by code, back button clicks, or a drag (case isDismissible is set to true).
- Note that only
messageis a required parameter. All the other ones are optional
class YourAwesomeApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'YourAwesomeApp',
home: Scaffold(
Container(
child: Center(
child: MaterialButton(
onPressed: (){
Flushbar(
title: "Hey Ninja",
message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry",
duration: Duration(seconds: 3),
)..show(context);
},
),
),
),
),
);
}
}

Lets get crazy Flushbar
Here is how customized things can get.
Flushbar(
title: "Hey Ninja",
titleColor: Colors.white,
message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry",
flushbarPosition: FlushbarPosition.TOP,
flushbarStyle: FlushbarStyle.FLOATING,
reverseAnimationCurve: Curves.decelerate,
forwardAnimationCurve: Curves.elasticOut,
backgroundColor: Colors.red,
boxShadows: [BoxShadow(color: Colors.blue[800], offset: Offset(0.0, 2.0), blurRadius: 3.0)],
backgroundGradient: LinearGradient(colors: [Colors.blueGrey, Colors.black]),
isDismissible: false,
duration: Duration(seconds: 4),
icon: Icon(
Icons.check,
color: Colors.greenAccent,
),
mainButton: TextButton(
onPressed: () {},
child: Text(
"CLAP",
style: TextStyle(color: Colors.amber),
),
),
showProgressIndicator: true,
progressIndicatorBackgroundColor: Colors.blueGrey,
titleText: Text(
"Hello Hero",
style: TextStyle(
fontWeight: FontWeight.bold, fontSize: 20.0, color: Colors.yellow[600], fontFamily: "ShadowsIntoLightTwo"),
),
messageText: Text(
"You killed that giant monster in the city. Congratulations!",
style: TextStyle(fontSize: 18.0, color: Colors.green, fontFamily: "ShadowsIntoLightTwo"),
),
);

- Don't forget to call
show()or the bar will stay hidden. - To deactivate any of those properties, pass
nullto it.
Styles
Flushbar can be either floating or grounded to the edge of the screen.
I don't recommend using margin or borderRadius if you chose FlushbarStyle.GROUNDED style.
Flushbar(flushbarStyle: FlushbarStyle.FLOATING)
or
Flushbar(flushbarStyle: FlushbarStyle.GROUNDED)
| Floating Style | Grounded Style |
|---|---|
![]() |
![]() |
Padding and Border Radius
You can give it some padding and a border radius. Works best with FlushbarStyle.FLOATING
Flushbar(
margin: EdgeInsets.all(8),
borderRadius: BorderRadius.circular(8),
);

Left indicator bar
Flushbar has a lateral bar to better convey the humor of the notification. To use it, simple give leftBarIndicatorColor a color.
Flushbar(
message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry",
icon: Icon(
Icons.info_outline,
size: 28.0,
color: Colors.blue[300],
),
duration: Duration(seconds: 3),
leftBarIndicatorColor: Colors.blue[300],
)..show(context);

Customize your text
If you need a more fancy text, you can use Text or RichText
and pass it to the titleText or messageText variables.
- Note that
titlewill be ignored iftitleTextis notnull - Note that
messagewill be ignored ifmessageTextis notnull
Flushbar(
title: "Hey Ninja", //ignored since titleText != null
message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", //ignored since messageText != null
titleText: Text("Hello Hero", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20.0 color: Colors.yellow[600], fontFamily:"ShadowsIntoLightTwo"),),
messageText: Text("You killed that giant monster in the city. Congratulations!", style: TextStyle(fontSize: 16.0, color: Colors.green[fontFamily: "ShadowsIntoLightTwo"),),
)..show(context);

Customize background and shadow
You can paint the background with any color you want. You can use any shadow you want.
Just give it a backgroundColor and boxShadows.
Flushbar(
title: "Hey Ninja",
message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry",
backgroundColor: Colors.red,
boxShadows: [BoxShadow(color: Colors.red[800], offset: Offset(0.0, 2.0), blurRadius: 3.0,)],
)..show(context);

Want a gradient in the background? No problem.
- Note that
backgroundColorwill be ignored whilebackgroundGradientis notnull
Flushbar(
title: "Hey Ninja",
message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry",
backgroundGradient: LinearGradient(colors: [Colors.blue, Colors.teal]),
backgroundColor: Colors.red,
boxShadows: [BoxShadow(color: Colors.blue[800], offset: Offset(0.0, 2.0), blurRadius: 3.0,)],
)..show(context);

Icon and button action
Let us put a Icon that has a PulseAnimation. Icons have this animation by default and cannot be changed as of now.
Also, let us put a button. Have you noticed that show() returns a Future?
This Future will yield a value when you call dismiss([T result]).
I recommend that you specify the result generic type if you intend to collect an user input.
Flushbar flush;
bool _wasButtonClicked;
@override
Widget build(BuildContext context) {
return Container(
child: Center(
child: MaterialButton(
onPressed: () {
flush = Flushbar<bool>(
title: "Hey Ninja",
message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry",
icon: Icon(
Icons.info_outline,
color: Colors.blue,),
mainButton: TextButton(
onPressed: () {
flush.dismiss(true); // result = true
},
child: Text(
"ADD",
style: TextStyle(color: Colors.amber),
),
),) // <bool> is the type of the result passed to dismiss() and collected by show().then((result){})
..show(context).then((result) {
setState(() { // setState() is optional here
_wasButtonClicked = result;
});
});
},
),
),
);
}
![]()
Flushbar position
Flushbar can be at FlushbarPosition.BOTTOM or FlushbarPosition.TOP.
Flushbar(
flushbarPosition: FlushbarPosition.TOP,
title: "Hey Ninja",
message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry",)..show(context);

Duration and dismiss policy
By default, Flushbar is infinite. To set a duration, use the duration property.
By default, Flushbar is dismissible by the user. A right or left drag will dismiss it.
Set isDismissible to false to change this behaviour.
Flushbar(
title: "Hey Ninja",
message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry",
duration: Duration(seconds: 3),
isDismissible: false,
)..show(context);
Progress Indicator
If you are loading something, use a LinearProgressIndicator
If you want an undetermined progress indicator, do not set progressIndicatorController.
If you want a determined progress indicator, you now have full control over the progress since you own the AnimationController
- There is no need to add a listener to your controller just to call
setState(){}. Once you pass in your controller,Flushbarwill do this automatically. Just make sure you call_controller.forward()
AnimationController _controller = AnimationController(
vsync: this,
duration: Duration(seconds: 3),
);
Flushbar(
title: "Hey Ninja",
message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry",
showProgressIndicator: true,
progressIndicatorController: _controller,
progressIndicatorBackgroundColor: Colors.grey[800],
)..show(context);
Show and dismiss animation curves
You can set custom animation curves using forwardAnimationCurve and reverseAnimationCurve.
Flushbar(
forwardAnimationCurve: Curves.decelerate,
reverseAnimationCurve: Curves.easeOut,
title: "Hey Ninja",
message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry",
)..show(context);
Listen to status updates
You can listen to status update using the onStatusChanged property.
- Note that when you pass a new listener using
onStatusChanged, it will activate once immediately so you can check in what state the Flushbar is.
Flushbar flushbar = Flushbar(title: "Hey Ninja", message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry");
flushbar
..onStatusChanged = (FlushbarStatus status) {
switch (status) {
case FlushbarStatus.SHOWING:
{
doSomething();
break;
}
case FlushbarStatus.IS_APPEARING:
{
doSomethingElse();
break;
}
case FlushbarStatus.IS_HIDING:
{
doSomethingElse();
break;
}
case FlushbarStatus.DISMISSED:
{
doSomethingElse();
break;
}
}
}
..show(context);
Input text
Sometimes we just want a simple user input. Use the propertyuserInputForm.
- Note that buttons, messages, and icons will be ignored if
userInputForm != null dismiss(result)will yield result.dismiss()will yield null.
Flushbar<List<String>> flush;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
TextFormField getFormField(String text) {
return TextFormField(
initialValue: text,
style: TextStyle(color: Colors.white),
maxLength: 100,
maxLines: 1,
maxLengthEnforcement: MaxLengthEnforcement.enforced,
decoration: InputDecoration(
fillColor: Colors.white10,
filled: true,
icon: Icon(
Icons.label,
color: Colors.grey[500],
),
border: UnderlineInputBorder(),
helperText: "Helper Text",
helperStyle: TextStyle(color: Colors.grey),
labelText: "Label Text",
labelStyle: TextStyle(color: Colors.grey)),
);
}
flush = Flushbar<List<String>>(
userInputForm = Form(
key: _formKey,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
getTextFormField("Initial Value"),
getTextFormField("Initial Value Two"),
]
Align(
alignment: Alignment.bottomRight,
child: Padding(
padding: const EdgeInsets.only(top: 8.0),
child: MaterialButton(
textColor: Colors.amberAccent,
child: Text("SUBMIT"),
onPressed: () {
flush.dismiss([_controller1.value.text, _controller2.value.text]);
},
),
),
)
],),),
)..show(context).then((result) {
if (result != null) {
String userInput1 = result[0];
String userInput2 = result[1];
}
});
This example tries to mimic the Material Design style guide

RTL text

You can add textDirection: Directionality.of(context) for rtl.
Flushbar(
message: "لوريم إيبسوم هو ببساطة نص شكلي يستخدم في صناعة الطباعة والتنضيد",
icon: Icon(
Icons.info_outline,
size: 28.0,
color: Colors.blue[300],
),
margin: EdgeInsets.all(6.0),
flushbarStyle: FlushbarStyle.FLOATING,
flushbarPosition: FlushbarPosition.TOP,
textDirection: Directionality.of(context),
borderRadius: BorderRadius.circular(12),
duration: Duration(seconds: 3),
leftBarIndicatorColor: Colors.blue[300],
)..show(context);
Flushbar Helper
I made a helper class to facilitate the creation of the most common Flushbars.
FlushbarHelper.createSuccess({message, title, duration});
FlushbarHelper.createInformation({message, title, duration});
FlushbarHelper.createError({message, title, duration});
FlushbarHelper.createAction({message, title, duration flatButton});
FlushbarHelper.createLoading({message,linearProgressIndicator, title, duration, progressIndicatorController, progressIndicatorBackgroundColor});
FlushbarHelper.createInputFlushbar({textForm});
История изменений
1.12.32 - 2025-09-08
- Prevent crashes from null checks in Flushbar route lifecycle (isDismissed, isAppearing, isHiding)
1.12.31 - 2025-09-01
- minor improvements
1.12.30 - 2023-11-05
- bump version
1.12.30-dev.1 - 2023-09-05
- fix type 'BorderRadius?' can't be assigned to the parameter type 'BorderRadiusGeometry' (https://github.com/cmdrootaccess/another-flushbar/issues/106)
1.12.29 - 2022-09-08
- flutter format code
1.11.29 - 2022-09-08
- update license to MIT
1.10.29 - 2022-17-05
- merged flutter v3 #66 from X-SLAYER/main
1.10.28 - 2021-12-09
- revert updated screenshots
1.10.27 - 2021-12-09
- merge updates
1.10.26 - 2021-11-24
- Update screenshot links
1.10.25 - 2021-11-01
- RTL text
1.10.24 - 2021-07-6
- Implemented endOffset parameter
1.10.23 - 2021-06-4
- Prevents hiding flushbar when user clicks the back button.
1.10.22 - 2021-05-14
- check if flushbar is null
1.10.21 - 2021-05-14
- add radius to leftBarIndicatorColor
1.10.20 - 2021-04-24
- If route was never initialized, do nothing
1.10.19 - 2021-04-23
- Fix Flushbar is hidden behind keyboard
1.10.18 - 2021-04-16
- Fix LateInitializationError: Field '_progressListener' has not been initialized
1.10.17 - 2021-03-16
- Fix nullpointer on onStatusChanged & add pedantic analysis and formatting
1.10.16 - 2021-03-16
- Remove unnecessary platform specific code
1.10.15 - 2021-03-11
- Add isAppearing and isHiding methods
1.10.14 - 2021-03-10
- add color and size parameter
- Let the user choose which corner they want to apply a radius on.
1.10.13 - 2021-03-6
- fix Expected value of SkDeletable, but got one of type Null
- fix regression after merge generated_plugin_registrant.dart: Undefined name 'AnotherFlushbarPlugin
1.10.12 - 2021-03-6
- added null safety support after merge from areille/null-safety merge
1.10.11 - 2021-02-22
- fix [WEB] Undefined name 'AnotherFlushbarPlugin' in generated_plugin_registrant.dart
1.10.10 - 2021-02-16
- FlushbarHelper.createAction() "button" parameter takes a FlatButton which is now deprecated in favor of TextButton
1.10.9 - 2021-02-16
- added positionOffset which allows a vertical offset for the flushbar
1.10.8 - 2020-12-12
- Web support
1.10.7 - 2020-06-12
- Updated Example
1.10.6 - 2020-06-12
- Fixed Readme
1.10.5 - 2020-06-12
- Fixed 'overlayEntries.isEmpty': is not true
[1.10.4] - 2020-15-05
- [button] is now a [Widget] instead of [FlatButton]
- Removed generic type requirement to extend Object
- Fixed bar blur clipping
[1.10.3] - 2020-15-05
- Fixes example pictures
[1.10.2] - 2020-15-05
- Fixes SDK version
[1.10.1] - 2020-07-05
- With FLutter's 1.17 release, Flushbar 1.10 is now compatible with stable channel
[1.10.0] - 2020-25-03
- Breaking change fixes a breaking change introduced by Flutter. Only use this version if you are using flutter v1.15 or greater (currently on the beta channel)
- Breaking change adds blockBackgroundInteraction property.
- Breaking change overlayBlur renamed to routeBlur. Will be ignored if blockBackgroundInteraction is false
- Breaking change overlayColor renamed to routeColor. Will be ignored if blockBackgroundInteraction is false
- Now, if [showProgressIndicator] is true and [progressIndicatorController] is null, an infinite linear progress indicator will be shown
- Performance improvements
- Code refactoring
[1.9.1] - 2019-21-10
- Fixed shadows not showing up
[1.9.0] - 2019-01-09
- Added
maxWidthproperty - Added
barBlurwhich applies a BackdropFilter only to Flushbar's background - Default animation curve changed from
fastOutSlowIntoeaseOutCirc
[1.8.2] - 2019-02-08
- Blur overlay is now dismissible by click if
isDismissible == true - Blur overlay will now animate until it disappears instead of vanishing
[1.8.1] - 2019-29-07
- Removed context requirement from flushbar_route
- Fix onTap requiring a return value
[1.8.0] - 2019-17-07
- Breaking Change renamed
aroundPaddingtomargin - Flushbar now supports uniform borders (same border on all sides)
- Added
borderColorproperty - Added
borderWidthproperty - Added
paddingproperty - default still complies with material design specs
[1.7.1+1] - 2019-10-07
- Fixed environment variables
[1.7.1] - 2019-10-07
- Changed file docs to comply with dartdoc directives
- Flutter minimum version for Flushbar is now 1.7.8
- With Flutter version 1.7.8 hitting stable, there is no version restriction for stable channel users anymore
[1.7.0] - 2019-05-06
- add onTap property
- fix exception caused by user dismissal while flushbar is appearing or hiding
[1.6.0] - 2019-31-05
- breaking change this fixes
The method 'detach' isn't defined for the class 'FocusScopeNode'
[1.5.3] - 2019-27-05
- update README file
[1.5.2] - 2019-26-05
titleTextandmessageTextare now widgets so users can useRichTextorText- Add
shouldIconPulseproperty
[1.5.0] - 2019-04-05
- Breaking Change boxShadow is now called boxShadows and is a List
[1.4.0] - 2019-08-04
- Add
overlayBlurproperty that pushes an overlay blocking user input on the background. Only takes effect if greater then 0.0 - Add
overlayColorproperty that changes the overlay color. Default is transparent. Only takes effect if overlayBlur is greater then 0.0 - Create new file for FlushbarRoute
[1.3.1] - 2019-02-04
- Constructor now has strongly typed parameters (my bad for forgetting it)
- Improved null message error
[1.3.0] - 2019-14-03
- Breaking Change expect for
onStatusChanged, all properties are now final. Two dot notation does not work anymore. Since you can only use the instance one time, this is the best practice. - Add
dismissDirectionproperty. - Behaviour change dismiss is now vertical by default. This is more natural since Flushbar show animation is also vertical.
- It is now possible to dismiss a Flushbar that is not the top route. The only inconvenient is that it will not animate back (simply disappear) and the listener, if used, will not register the dismissal.
- Updated README file
[1.2.4] - 2019-05-03
- Added FlushbarStyle.FLOATING & FlushbarStyle.GROUNDED
- Fixed icon animation being started even if icon is null
[1.2.3] - 2019-25-02
- Breaking Change Flushbar now accepts a BoxShadow for a more customized shadow
[1.2.2] - 2019-22-02
- Fixed a bug when push an route after flushbar, and flushbar timer pop the current route out
[1.2.1] - 2019-11-01
- aroundPadding is now more flexible and receives EdgeInsets instead of an int
[1.2.0] - 2018-09-12
- add animationDuration argument. You can now control how long does it take to show and dismiss Flushbar
[1.1.2] - 2018-24-10
- icon argument can now be any widget, though I recommend using Icon or Image
- added null checks
[1.1.1] - 2018-17-10
- Fixed bug where calling Navigator.push() on Flushbar swipe dismissal did not pop the route
- Fixed bug where swipe to dismiss a padded Flushbar caused to being stuck at the edge
[1.1.0] - 2018-11-10
- Added two new features: aroundPadding and borderRadius
- Fixed a bug where the overlay background was not null
[1.0.1] - 2018-11-02
- Texts now respond to alignment
[1.0.0] - 2018-11-02
- No changes. Simply reached stable after a month without new bugs
[0.9.2] - 2018-09-29
Changes
- Dismissing a Flushbar that is not the top route no longer throws an exception
- Dismissing a Flushbar that is not the top route has the following effects:
- It does not animate back. It simply vanishes
- FlushbarStatus listener will not register
FlushbarStatus.IS_HIDINGorFlushbarStatus.DISMISSED - It returns no value when the Future yield by
dismiss()completes
Fixes
- Fixed an issue where a dismissible Flushbar would not cancel the timer and pop two routes instead of one
[0.9.1] - 2018-09-25
Changes
- Fixed an issue where Flushbar could get stuck when swipe to dismiss was used
- Minor layout tweeks
- Flushbar gets a weird logo! Do not judge me. I'm not a designer :)
- README file update
- README file fixes
[0.9.0] - 2018-09-10
Looking good for version 1.0. Please, report any issues your have.
Changes
- IMPORTANT
dismiss()now returns a future when the animation is completed and route is poped. That makes it easier to concatenate two or more Flushbars. - Major changes on how
showanddismissanimations work, making Flushbar more reliable. - Trying to
dismiss()a Flushbar that is not the top route is going to throw an error. - Pressing the back button will now properly
dismiss()Flushbar. - Performance improvements. In and out animations are smoother.
Layout Changes
- Removed top padding when
flushbarPosition == FlushbarPosition.TOP
[0.8.3] - 2018-09-07
Fixes
- Fixed issue when
isDismissibleis set to false Issue #6 - Fixed issue where the keyboard would hide Flushbar Issue #7
[0.8.2] - 2018-08-27
Changes
- Add
keyproperty - Fixed bug here using flushbar_helper progressIndicator did not show
- Fixed documentation about progressIndicator
[0.8.1] - 2018-08-12
Changes
- Fixed Dart version issue
[0.8.0] - 2018-08-11
Breaking changes
- Changed the behaviour of linearProgressIndicator to allow the user to controll its progress. See README.md for examples
Changes
- Added a left vertical bar to better convey the humor of the notification. See README.md for examples
- Title is not mandatory anymore
[0.7.6] - 2018-08-07
Changes
- Version update to supprt master channel
[0.7.5] - 2018-07-28
Changes
- Fix bug where keyboard did not show when using a Form
- Flushbar is now compatible with the master channel
- Bug fixes
[0.7.1] - 2018-07-08
Changes
- Flushbar doc update
[0.7.0] - 2018-07-08
Breaking changes
- Flushbar does not need a global instance anymore
- Flushbar it now made be used only one time. After it hits the dismissed state, that instance wont work anymore
- Due to the behaviour above, there is no need to call commitChanges() anymore
- Flushbar does not need to be within a Stack widget anymore
- Purged state eliminated
- FlushbarMorph is now called FlushbarHelper
Changes
- README.md is updated
Known issues
- When using a Form, the keyboard is not shown. Still figuring out how to solve it.
[0.5.6] - 2018-06-20
Changed
- Fixed dependency issue
[0.5.5] - 2018-06-20
Changed
- Updated flushbar_morph
- Updated sdk version
[0.5.4] - 2018-06-16
Changed
- Flushbar now animates size changes when commit is called while showing
- Layout refinements
[0.5.2] - 2018-06-05
Changed
- User input now receives a Form to facilitate field validation
[0.5.1] - 2018-06-05
Changed
- Fixed brain fart. Same changes as 0.5.0
[0.5.0] - 2018-06-05
Changed
- Removed change...() functions. Cascade notation is now recommended
- Update readme file
- Default message font size reduced from 16.0 to 14.0
- Default title font size reduced from 16.0 to 15.0
[0.4.7] - 2018-06-04
Changed
- Fixed bug with bar duration
- Blink animation when Flushbar is not dismissed now animates the whole bar and is synchronised with content change.
[0.4.5] - 2018-06-03
Added
- Blink animation when commitChanges() is called when Flushbar is not dismissed. This provides a smooth content transition
- Helper class to morph Flushbar (FlushbarMorph)
Changed
- Code cleanup
[0.4.0] - 2018-05-27
Added
- InputTextField
[0.3.1] - 2018-05-27
Changed
- Fixed bar being automatically called
- Title and message are not required at construction time
- Better usage example
- Removed callback from constructor
[0.3.0] - 2018-05-27
Changed
- Removed the possibility to chose icon position
- Widgets are now aligned correctly
- Documentation improvements
[0.2.5] - 2018-05-26
Changed
- Bug fixes
- Moved icon animation into the flushbar
- changeStatusListener() is now activated on change
[0.2.0] - 2018-05-24
Added
- Removed requirement for a initial widget
- OnStatusChanged callback so it is possible to listen to the various Flushbar status
- The callback can be changed using changeStatusListener()
- Started working on the README.md file
Changed
- IconAwareAnimation is now more general and it is called PulseAnimator
- Flushbar now accepts an Icon instead of only the IconData and IconColor
- Alignment changes
- Default background color
[0.0.1] - 2018-05-23
Added
- Flushbar creation
- Single button action
- Status listeners
- Left or right icon positioning
- Top or bottom positioning


