A light weight library to easily manage a progress dialog with simple steps whenever you need to do it. You can easily show and hide it.
A light weight package to show progress dialog. As it is a stateful widget, you can change the text shown on the dialog dynamically.
Thank you for being a user of this package, this package is discontinued due to serveral reasons, please find the other library which you can use to accomplish the task which this package does and I believe that package will be more helpful. Please find the repo link here for OTS (Over the screen)
Dart SDK version >= 2.7.0
Add the Package
dependencies:
progress_dialog: ^1.2.4
Import the package in your dart file
import 'package:progress_dialog/progress_dialog.dart';
Create and initialise a ProgressDialog object inside the build() method passing context to it
final ProgressDialog pr = ProgressDialog(context);
//For normal dialog
pr = ProgressDialog(context,type: ProgressDialogType.Normal, isDismissible: true/false, showLogs: true/false);
//For showing progress percentage
pr = ProgressDialog(context,type: ProgressDialogType.Download, isDismissible: true/false, showLogs: true/false);
pr.style(
message: 'Downloading file...',
borderRadius: 10.0,
backgroundColor: Colors.white,
progressWidget: CircularProgressIndicator(),
elevation: 10.0,
insetAnimCurve: Curves.easeInOut,
progress: 0.0,
textDirection: TextDirection.rtl,
maxProgress: 100.0,
progressTextStyle: TextStyle(
color: Colors.black, fontSize: 13.0, fontWeight: FontWeight.w400),
messageTextStyle: TextStyle(
color: Colors.black, fontSize: 19.0, fontWeight: FontWeight.w600)
);
Note: You don't need to use all parameters, all of them are optional
await pr.show();
pr.update(
progress: 50.0,
message: "Please wait...",
progressWidget: Container(
padding: EdgeInsets.all(8.0), child: CircularProgressIndicator()),
maxProgress: 100.0,
progressTextStyle: TextStyle(
color: Colors.black, fontSize: 13.0, fontWeight: FontWeight.w400),
messageTextStyle: TextStyle(
color: Colors.black, fontSize: 19.0, fontWeight: FontWeight.w600),
);
Note: You don't need to use all parameters, all of them are optional
pr.hide().then((isHidden) {
print(isHidden);
});
// or
await pr.hide();
Navigating to next screens must be done after the completion of Future - hide(). See here for example
bool isProgressDialogShowing = pr.isShowing();
print(isProgressDialogShowing);
pr = ProgressDialog(
context,
type: ProgressDialogType.Normal,
isDismissible: true,
/// your body here
customBody: LinearProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.blueAccent),
backgroundColor: Colors.white,
),
);
If you don't like to configure/style the dialog and continue with the default style, it's okay but just have a look at our default configuration.
Attribute | Value |
---|---|
Dismissible | true |
ProgressDialogType | ProgressDialogType.Normal |
BackgroundColor | Colors.white |
BorderRadius | RoundedRectangularBorder(radius: 8.0) |
AnimationCurve | Curves.easeInOut |
Elevation | 8.0 |
ProgressWidget | Double_rings_loding_indicator |
MessageTextStyle | color: Colors.black, fontSize: 19.0, fontWeight: FontWeight.w600 |
ProgressTextStyle | color: Colors.black, fontSize: 13.0, fontWeight: FontWeight.w400 |
showLogs | false |
Attribute | Can be updated during instantiating | Can be updated during styling | Can be updated during dialog is shown |
---|---|---|---|
Dismissible | Yes | No | No |
ProgressDialogType | Yes | No | No |
BackgroundColor | No | Yes | No |
BorderRadius | No | Yes | No |
AnimationCurve | No | Yes | No |
Elevation | No | Yes | No |
ProgressWidget | No | Yes | Yes |
MessageTextStyle | No | Yes | Yes |
ProgressTextStyle | No | Yes | Yes |
ShowLogs | Yes | No | No |
Pull requests and issues are always welcome!
Loading indicator -> https://loading.io/