Awaitable Button

Features

Button with indicator display during processing to prevent consecutive hits.

Web demo for awaitable_button/example

https://altive.github.io/flutter_widgets/

Getting started

awaitable_button: any

Usage

import 'package:awaitable_button/awaitable_button.dart';

@override
Widget build(BuildContext context) {
    return AwaitableElevatedButton<String>(
      // Required
      onPressed: () {
        // do something
      },
      // Optional
      whenComplete: (value) {
        // do something
      },
      // Optional
      onError: (exception, stackTrace) {
        // do something
      },
      // Optional
      buttonStyle: ElevatedButton.styleFrom(),
      // Optional
      indicator: CircularProgressIndicator(),
      // Optional
      executingChild: const Text('Executing...'),
      // Required
      child: const Text('Button'),
    );
}
@override
Widget build(BuildContext context) {
    return AwaitableOutlinedButton<String>(
      // Required
      onPressed: () {
        // do something
      },
      // Optional
      whenComplete: (value) {
        // do something (Optional)
      },
      // Optional
      onError: (exception, stackTrace) {
        // do something
      },
      // Optional
      buttonStyle: OutlinedButton.styleFrom(),
      // Optional
      indicator: CircularProgressIndicator(),
      // Optional
      executingChild: const Text('Executing...'),
      // Required
      child: const Text('Button'),
    );
}
@override
Widget build(BuildContext context) {
    return AwaitableTextButton<String>(
      // Required
      onPressed: () {
        // do something
      },
      // Optional
      whenComplete: (value) {
        // do something (Optional)
      },
      // Optional
      onError: (exception, stackTrace) {
        // do something
      },
      // Optional
      buttonStyle: TextButton.styleFrom(),
      // Optional
      indicator: CircularProgressIndicator(),
      // Optional
      executingChild: const Text('Executing...'),
      // Required
      child: const Text('Button'),
    );
}
@override
Widget build(BuildContext context) {
    return AwaitableIconButton<String>(
      // Required
      onPressed: () {
        // do something
      },
      // Optional
      whenComplete: (value) {
        // do something
      },
      // Optional
      executingIcon: const Icon(Icons.timer_sharp),
      // Required
      icon: const Icon(Icons.timer),
    );
}

Libraries

awaitable_button