get_controller_plus

Last updated:

0 purchases

get_controller_plus Image
get_controller_plus Images
Add to Cart

Description:

get controller plus

get_controller_plus #
Extension of GetxController from GetX package with support Widgets.
Features #

Awareness of a running process with duration which requires users to be notified
Convenient error handler macro functions
Further encouraging decoupling of Views and View Logics
Provided with support widgets

Getting started #
Prerequisites #

GetX package
Knowledge of using GetxController class
Knowledge of connecting Get Observables

Usage #
Implementation is the same like GetxController
import 'package:get_controller_plus/get_controller_plus.dart';

class MySmartController extends GetxControllerPlus {
copied to clipboard
Capabilities #
Load Aware
Introducing LoadAware capabilities, the GetxControllerPlus provides extension methods:

isLoading getter and setter, and with tag variant, isLoadingByTag and setIsLoadingByTag.

// under GetxControllerPlus scope
isLoading = true;
isLoading = false;
setIsLoadingByTag(true, "anotherProcess",);

// within Views
Obx(
() => {
final isLoading = controller.isLoading;
// or
// final isLoading = controller.isLoadingByTag("anotherProcess",);
return IgnorePointer(
ignoring: isLoading,
child: ElevatedButton(
onPressed: () {},
child: isLoading ? CircularProgressIndicator.adaptive() : Text("Go",),
),
);
},
)
copied to clipboard

wait method

// run a Future and resolves it while automatically managing the isLoading state
// usable under GetxControllerPlus scope

final result = await wait(
download(),
);
copied to clipboard

Support Widget LoadAwareGetView and LoadAwareWillPopScope

// examples
import 'package:get_controller_plus/support_widgets.dart';

LoadAwareGetView<MySmartController>(
builder: (BuildContext context, bool isLoading, Widget? child) {
if (isLoading) {
return CircularProgressIndicator.adaptive();
} else {
return MySmartView();
}
},
)

// this widget will not pop out if isLoading is true
LoadAwareWillPopScope<MySmartController>(
// you may override the default onWillPop behavior
// onWillPop: ...
child: Scaffold(),
)
copied to clipboard
Error Handling
GetxControllerPlus comes with two additional methods to handle errors.

setErrorHandler<T>

// public method, can be called from View scope or the controller scope itself
// set this first to make it available within handleError method.

// within View
controller.setErrorHandler<IOException>(
showAlertDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text("Error",),
content: Text("Connection Error!",),
);
},
),
);

// within controller
// preferrably within onInit state
void _showFormatError() {
_hasError.value = true;
}

@override
void onInit() {
super.onInit();
setErrorHandler<FormatException>(
_showFormatError,
);
}
copied to clipboard

handleError(Object err)

// protected method, call within controller's scope
Future<void> doSomething() async {
try {
// myMagic();
} catch (err) {
handleError(err,);
}
}
copied to clipboard
Additional information #
Additional ideas and concepts are welcome by publishing on Git issues.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.