simple_loading_dialog 0.5.0 copy "simple_loading_dialog: ^0.5.0" to clipboard
simple_loading_dialog: ^0.5.0 copied to clipboard

SimpleLoadingDialog: A seamless full-screen loading dialog for Flutter. Efficiently manage actions while awaiting Futures, and easily customize with Widgets and ThemeExtension.

simple_loading_dialog #

A simple full-screen loading dialog for Flutter.

Features #

  • A very simple full-screen loading dialog.
  • Can block user input while waiting for a Future to complete.
  • Rethrows exceptions on error.
  • Customizable dialog appearance.
  • Returns the result of the Future.

Demo #

simple_loading_dialog

Usage #

To use this package, add simple_loading_dialog as a dependency in your pubspec.yaml file.

Showing the dialog #

To show the dialog, use the showSimpleLoadingDialog function.

final result = showSimpleLoadingDialog<String>(
  context: context,
  future: myFutureFunction,
);

This will show a full-screen progress dialog while waiting for the myFutureFunction to complete. Once the Future completes, the result will be returned and the dialog will be dismissed.

Customizing the appearance #

The appearance of the dialog can be customized by passing a dialogBuilder.

showSimpleLoadingDialog<void>(
  context: context,
  future: myFutureFunction,
  dialogBuilder: (context, _) => AlertDialog(
    content: Column(
      mainAxisSize: MainAxisSize.min,
      children: [
        CircularProgressIndicator(),
        SizedBox(height: 16),
        Text('Custom message'),
      ],
    ),
  ),
);

To customize the appearance of the dialog using the SimpleLoadingDialogTheme extension, define a theme in your app and pass it to the showSimpleProgressDialog function.

MaterialApp(
  title: 'My App',
  theme: ThemeData(
    useMaterial3: true,
    colorSchemeSeed: Colors.blue,
    // Set default theme like this
    extensions: [
      SimpleLoadingDialogTheme(
        dialogBuilder: (context, message) {
          return AlertDialog(
            content: Column(
              mainAxisSize: MainAxisSize.min,
              children: [
                const SizedBox(height: 16),
                const CircularProgressIndicator(),
                const SizedBox(height: 16),
                Text(message),
                const SizedBox(height: 16),
              ],
            ),
          );
        },
      ),
    ],
  ),
  home: MyHomePage(),
);

~~~

final result = showSimpleLoadingDialog<String>(
  context: context,
  future: myFutureFunction,
  message: "Saving...",
);

Handling errors #

If an error occurs while waiting for the Future to complete, the exception will be rethrown. To handle the error, use a try-catch block.

try {
  await showSimpleLoadingDialog<void>(
    context: context,
    future: myFutureFunction,
  );
} catch (e) {
  // Handle the error.
}

License #

This package is licensed under the MIT License. See the LICENSE file for details.

3
likes
140
pub points
79%
popularity

Publisher

verified publisherk9i.app

SimpleLoadingDialog: A seamless full-screen loading dialog for Flutter. Efficiently manage actions while awaiting Futures, and easily customize with Widgets and ThemeExtension.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on simple_loading_dialog