kr_button 1.0.0 copy "kr_button: ^1.0.0" to clipboard
kr_button: ^1.0.0 copied to clipboard

A package that replaces the default TextButton and InkWell widgets with a loading effect

KrButton #

KrButton is a Flutter package that provides custom TextButton and InkWell widgets with a built-in loading animation that is displayed while waiting for the onPressed function to complete. The buttons can be used just like regular TextButtons and InkWell widgets.

Usage #

To use KrButton, simply replace your existing TextButton or InkWell with KrTextButton or KrInkWell, respectively. Here's an example:

import 'package:flutter/material.dart';
import 'package:kr_button/kr_button.dart';

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return KrTextButton(
      onPressed: () async {
        // Perform some time-consuming operation
      },
      child: Text('My Button'),
      onLoading: CircularProgressIndicator(),
      onError: Icon(Icons.error),
      style: TextButton.styleFrom(
        backgroundColor: Colors.blue,
        primary: Colors.white,
      ),
    );
  }
}

Features #

KrButton provides the following features:

  • Built-in loading animation
  • Customizable loading and error widgets
  • Ability to customize the button style using the ButtonStyle parameter
  • Ability to customize the FocusNode using the focusNode parameter
  • KrButtonController class to manually control the state of the button

KrButtonController #

KrButtonController is a class that can be used to manually control the state of a KrButton. To use KrButtonController, simply create an instance of it and pass it to the controller parameter of KrTextButton or KrInkWell. Here's an example:

import 'package:flutter/material.dart';
import 'package:kr_button/kr_button.dart';

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  final controller = KrButtonController();

  @override
  Widget build(BuildContext context) {
    return KrTextButton(
      controller: controller,
      onPressed: () async {
        // Perform some time-consuming operation
      },
      child: Text('My Button'),
      onLoading: CircularProgressIndicator(),
      onError: Icon(Icons.error),
      style: TextButton.styleFrom(
        backgroundColor: Colors.blue,
        primary: Colors.white,
      ),
    );
  }
}

You can then manually control the state of the button using the methods of the KrButtonController class:

// Start loading animation
controller.loading();

// Show error icon
controller.error();

// Show success icon
controller.success();

License #

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

1
likes
120
pub points
29%
popularity

Publisher

unverified uploader

A package that replaces the default TextButton and InkWell widgets with a loading effect

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter, flutter_spinkit

More

Packages that depend on kr_button