progress_dialog

A light weight package to show progress dialog. As it is a stateful widget, you can change the text shown on the dialog dynamically.

Sponsor!   LinkedIn   Follow   Fork   Star   Watches

Get the library   Example

Supported Dart Versions

Dart SDK version >= 2.1.0

Demo

Normal dialog Demo Download dialog Demo

Installation

Pub

Add the Package

dependencies:
  progress_dialog: ^1.2.0

How to use

Import the package in your dart file

import 'package:progress_dialog/progress_dialog.dart';

Create an instance of ProgressDialog

ProgressDialog pr;

Initialise the pr object inside the build() method passing context to it

  1. Initialize the ProgressDialog object
    pr = new ProgressDialog(context);
    
  2. By default it is a normal dialog to show some message, if you would like to use it to show percentage of progress done, specify the optional type parameter and specify if you want your dialog to dismiss when back button is pressed isDismissible parameter (Optional)
    //For normal dialog
    pr = new ProgressDialog(context,type: ProgressDialogType.Normal, isDismissible: true/false, showLogs: true/false);
        
    //For showing progress percentage
    pr = new ProgressDialog(context,type: ProgressDialogType.Download, isDismissible: true/false, showLogs: true/false);
    
  3. Style the progress dialog (Optional)
    pr.style(
      message: 'Downloading file...',
      borderRadius: 10.0,
      backgroundColor: Colors.white,
      progressWidget: CircularProgressIndicator(),
      elevation: 10.0,
      insetAnimCurve: Curves.easeInOut,
      progress: 0.0,
      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
    
  4. Showing the progress dialog
    pr.show();
    
  5. Dynamically update the content shown out there
    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
    
  6. Dismissing the progress dialog
    pr.hide().then((isHidden) {
      print(isHidden);
    });
    

Navigating to next screens must be done after the completion of Future - hide(). See here for example

Check if progress dialog is showing

bool isProgressDialogShowing = pr.isShowing();
print(isProgressDialogShowing);

Demo

Normal dialog Demo Download dialog Demo

Default configuration/styles

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.

AttributeValue
Dismissibletrue
ProgressDialogTypeProgressDialogType.Normal
BackgroundColorColors.white
BorderRadiusRoundedRectangularBorder(radius: 8.0)
AnimationCurveCurves.easeInOut
Elevation8.0
ProgressWidgetDouble_rings_loding_indicator
MessageTextStylecolor: Colors.black, fontSize: 19.0, fontWeight: FontWeight.w600
ProgressTextStylecolor: Colors.black, fontSize: 13.0, fontWeight: FontWeight.w400
showLogsfalse

Well let's discuss limits for configuring it

AttributeCan be updated during instantiatingCan be updated during stylingCan be updated during dialog is shown
DismissibleYesNoNo
ProgressDialogTypeYesNoNo
BackgroundColorNoYesNo
BorderRadiusNoYesNo
AnimationCurveNoYesNo
ElevationNoYesNo
ProgressWidgetNoYesYes
MessageTextStyleNoYesYes
ProgressTextStyleNoYesYes
ShowLogsYesNoNo

Want to contribute?

Pull requests and issues are always welcome!

How to contribute?

  1. Fork the repository
  2. Clone it to your local machine
  3. Open the project in your favourite editor
  4. Open cmd/terminal and run flutter clean and then flutter packages get
  5. Make the changes
  6. Create a Pull Request

View the issues here

This library is only tested for Android, iOS contributors are most welcome


Loading indicator -> https://loading.io/

Libraries

progress_dialog