Controller class abstract
A Clean Architecture Controller. Should be aggregated within a ViewState
or
a CleanView
. However, it is preferable to be contained inside the CleanView
for readability
and maintainability.
The Controller handles the events triggered by the CleanView
. For example, it handles
the click events of buttons, lifecycle, data-sourcing, etc...
The Controller is also route-aware. However, in order to use it, it has to be initialized separately.
Usage of a Controller:
// ***************** Controller *****************
class CounterController extends Controller {
int counter;
final MyPresenter presenter;
CounterController() : counter = 0, presenter = MyPresenter(), super();
void increment() {
counter++;
}
/// Shows a snackbar
void showSnackBar() {
ScaffoldState scaffoldState = getState(); // get the state, in this case, the scaffold
scaffoldState.showSnackBar(SnackBar(content: Text('Hi')));
}
@override
void initListeners() {
// Initialize presenter listeners here
// e.g. presenter.loginOnComplete = () => print('Login Successful);
// see [initListeners]
}
}
// ***************** View *****************
class CounterPage extends View {
@override
// you can inject dependencies for the controller and the state in here
State<StatefulWidget> createState() => CounterState(CounterController());
}
// ***************** ViewState *****************
class CounterState extends ViewState<CounterPage, CounterController> {
CounterState(CounterController controller) : super(controller);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: Scaffold(
key: globalKey, // using the built-in global key of the `CleanView` for the scaffold or any other
// widget provides the controller with a way to access them via getContext(), getState(), getStateKey()
body: Column(
children: <Widget>[
Center(
// show the number of times the button has been clicked
child: Text(controller.counter.toString()),
),
MaterialButton(onPressed: () => controller.increment()),
],
),
),
);
}
}
- Mixed-in types
Constructors
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- hasListeners → bool
-
Whether any listeners are currently registered.
no setterinherited
- logger ↔ Logger
-
getter/setter pair
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
addListener(
VoidCallback listener) → void -
Register a closure to be called when the object changes.
inherited
-
didChangeAccessibilityFeatures(
) → void -
Called when the system changes the set of currently active accessibility
features.
inherited
-
didChangeAppLifecycleState(
AppLifecycleState state) → void -
Called when the system puts the app in the background or returns
the app to the foreground.
override
-
didChangeLocales(
List< Locale> ? locales) → void -
Called when the system tells the app that the user's locale has
changed. For example, if the user changes the system language
settings.
inherited
-
didChangeMetrics(
) → void -
Called when the application's dimensions change. For example,
when a phone is rotated.
inherited
-
didChangePlatformBrightness(
) → void -
Called when the platform brightness changes.
inherited
-
didChangeTextScaleFactor(
) → void -
Called when the platform's text scale factor changes.
inherited
-
didChangeViewFocus(
ViewFocusEvent event) → void -
Called whenever the PlatformDispatcher receives a notification that the
focus state on a view has changed.
inherited
-
didHaveMemoryPressure(
) → void -
Called when the system is running low on memory.
inherited
-
didPop(
) → void -
Called when the current route has been popped off.
inherited
-
didPopNext(
) → void -
Called when the top route has been popped off, and the current route
shows up.
inherited
-
didPopRoute(
) → Future< bool> -
Called when the system tells the app to pop the current route, such as
after a system back button press or back gesture.
inherited
-
didPush(
) → void -
Called when the current route has been pushed.
inherited
-
didPushNext(
) → void -
Called when a new route has been pushed, and the current route is no
longer visible.
inherited
-
didPushRoute(
String route) → Future< bool> -
Called when the host tells the application to push a new route onto the
navigator.
inherited
-
didPushRouteInformation(
RouteInformation routeInformation) → Future< bool> -
Called when the host tells the application to push a new
RouteInformation and a restoration state onto the router.
inherited
-
didRequestAppExit(
) → Future< AppExitResponse> -
Called when a request is received from the system to exit the application.
inherited
-
dispose(
) → void -
Discards any resources used by the object. After this is called, the
object is not in a usable state and should be discarded (calls to
addListener will throw after the object is disposed).
override
-
getContext(
) → BuildContext -
Retrieves the BuildContext associated with the
CleanView
. Will throw an error if initController() was not called prior. -
getState(
) → State< StatefulWidget> - Retrieves the State<StatefulWidget> associated with the CleanView
-
getStateKey(
) → GlobalKey< State< StatefulWidget> > - Retrieves the GlobalKey<State<StatefulWidget>> associated with the CleanView
-
handleCancelBackGesture(
) → void -
Called when a predictive back gesture is canceled, indicating that no
navigation should occur.
inherited
-
handleCommitBackGesture(
) → void -
Called when a predictive back gesture is finished successfully, indicating
that the current route should be popped.
inherited
-
handleStartBackGesture(
PredictiveBackEvent backEvent) → bool -
Called at the start of a predictive back gesture.
inherited
-
handleUpdateBackGestureProgress(
PredictiveBackEvent backEvent) → void -
Called when a predictive back gesture moves.
inherited
-
initController(
GlobalKey< State< key) → voidStatefulWidget> > -
Initializes optional Controller variables that can be used for _refreshing and error displaying.
This method is called automatically by the mounted
CleanView
. Do not call. -
initListeners(
) → void - Initialize the listeners inside the the Controller's Presenter. This method is called automatically inside the Controller constructor and must be overridden. For example:
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
notifyListeners(
) → void -
Call all the registered listeners.
inherited
-
onDeactivated(
) → void -
Called before the view is deactivated.
When the view is in this context, it means that the view is about to be extracted from the widget tree, but it may be
added again. Quoting the view
deactivate
docs fromhttps://api.flutter.dev/flutter/widgets/State/deactivate.html
: -
onDetached(
) → void - Called before the application is detached. When the application is in this state, the engine is still running but not attached to any view.
-
onDidChangeDependencies(
) → void -
Called before
CleanView.didChangeDependencies
is called -
onDisposed(
) → void -
Unmounts the Controller from the
CleanView
. Called by theCleanView
automatically. Any cleaning, disposing should go in here. -
onHidden(
) → void - Called before the application is detached. A callback that is called when the application is hidden. On mobile platforms, this is usually just before the application is replaced by another application in the foreground. On desktop platforms, this is just before the application is hidden by being minimized or otherwise hiding all views of the application. On the web, this is just before a window (or tab) is hidden.
-
onInActive(
) → void - Called when the application is in an inactive state and is not receiving user input. On iOS, this state corresponds to an app or the Flutter host view running in the foreground inactive state. Apps transition to this state when in a phone call, responding to a TouchID request, when entering the app switcher or the control center, or when the UIViewController hosting the Flutter app is transitioning. On Android, this corresponds to an app or the Flutter host view running in the foreground inactive state. Apps transition to this state when another activity is focused, such as a split-screen app, a phone call, a picture-in-picture app, a system dialog, or another window.
-
onInitState(
) → void -
Called before
CleanView.initState
is called -
onPaused(
) → void -
Called when the application is not currently visible to the user, not responding to user input, and running in the background.
When the application is in this state, the engine will not call the
Window.onBeginFrame
andWindow.onDrawFrame
callbacks. Android apps in this state should assume that they may enter thedetached
state at any time. -
onReassembled(
) → void -
Called before the view is reassembled.
When this method is called on view life cycle on
reassemble
, and it guarantees thatbuild
lifecycle will be called. Quoting the docs: -
onResumed(
) → void - Called when the application is visible and is responding to the user i.e. in the foreground and running.
-
refreshUI(
) → void -
_refreshes the
ControlledWidgets
and theStatefulWidgets
that depends on FlutterCleanArchitecture.getController of the CleanView associated with the Controller if it is still mounted. -
removeListener(
VoidCallback listener) → void -
Remove a previously registered closure from the list of closures that are
notified when the object changes.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited