Skip to content

Add loading to your app with just two words, adding this mixin to your class

License

Notifications You must be signed in to change notification settings

tiagosito/loading_mixin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

Want to add Loading to your app?
With Loading Mixin you get it in a simple, fast and customizable way

Pub Package Buy Me A Coffee

Overview

This package is for you to add loading to your application with just two words, adding this mixin to your class.

Contributing

For more information, see the complete example

Getting Started

In pubspec.yaml:

dependencies:
  loading_mixin: any

Load type: Automatic, Custom, Manual and Predefined Time

Loading Mixin

Basic:

First: in your State class, add the mixin to the LoadingMixin class

import 'package:loading_mixin/loading_mixin.dart';

class LoadingMixinTest extends StatefulWidget {
  @override
  _LoadingMixinTestState createState() => _LoadingMixinTestState();
}

//State Class
class _LoadingMixinTestState extends State<LoadingMixinTest> with LoadingMixin {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Loading Mixin'),
      ),
      body: buildBody(),
    );
  }
  .
  .
  .

Second: add the startLoad method by passing your asynchronous function wherever you need

  RaisedButton(onPressed: () async {
      var result = await this.startAutomaticLoad(context, requestData);

      result != null ? print('$result') : print('No data found!');
    },
    child: Text('Default Load',style: TextStyle(color: Colors.white),
    ),
  )

  //Async/HTTP request Example
  static Future requestData() async {
    await Future.delayed(Duration(milliseconds: 1500));
    return 1844;
  }
}

Custom: You can also customize your loading by passing the customLaod parameter

  RaisedButton(onPressed: () async {
    var customLoad = Container(
      height: 50,
      width: 50,
      color: Colors.transparent,
      child: Center(
          child: CircularProgressIndicator(
          valueColor: new AlwaysStoppedAnimation<Color>(Colors.yellow),
          ),
      ),
      );
      var result = await this.startAutomaticLoad(
        context,
        requestData,
        loadingConfig: LoadingConfig(customLoad: customLoad),
        );

      result != null ? print('$result') : print('No data found!');
    },
    child: Text(
        'Async',
        style: TextStyle(color: Colors.white),
    ),
  )

Manual Load: You can also start and finish the load manually

  RaisedButton( onPressed: () async {
      //Open Load
      var ovelayEntry = this.startManualLoad(context);

      //Your code
      print('Put your code here!');
      await Future.delayed(Duration(seconds: 2));

      //Close Load
      this.endManualLoad(context, ovelayEntry);
    },
    child: Text(
      'Manual Load',
      style: TextStyle(color: Colors.white),
    ),
  )

Features and bugs

Please send feature requests and bugs at the issue tracker.

About

Add loading to your app with just two words, adding this mixin to your class

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published