-
Notifications
You must be signed in to change notification settings - Fork 0
Lifecycle
Efra Espada edited this page Jul 2, 2024
·
1 revision
The go_mvp
package provides lifecycle methods that mimic Android's activity lifecycle:
-
onCreate
: Called when the screen is created. -
onResume
: Called when the screen is brought to the foreground. -
onPause
: Called when the screen is no longer in the foreground. -
onDestroy
: Called when the screen is destroyed.
These methods can be overwritten in the widget's State, in the Presenter and in the ViewModel to handle the specific logic of each lifecycle event.
If you overwrite these methods, remember to invoke
super
.
On widget's State:
class MainPageState extends MainLifecycle {
@override
Widget onBuild(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Main Screen"),
),
body: ListView(
...
),
);
}
@override
Future<void> onCreate() async {
await super.onCreate();
// do some stuff
}
@override
Future<void> onResume() async {
await super.onResume();
// do some stuff
}
@override
Future<void> onPause() async {
// do some stuff
await super.onPause();
}
@override
Future<void> onDestroy() async {
// do some stuff
await super.onDestroy();
}
}
On Presenter:
class MainPresenter extends BaseMainPresenter {
@override
Future<bool> onCreate() async {
// do some stuff
return await super.onCreate();
}
@override
Future<bool> onResume() async {
// do some stuff
return await super.onResume();
}
@override
Future<void> onPause() async {
// do some stuff
await super.onPause();
}
@override
Future<bool> onDestroy() async {
// do some stuff
return await super.onDestroy();
}
}
On ViewModel:
class MainViewModel extends BaseMainViewModel {
@override
Future<void> onCreate() async {
await super.onCreate();
// do some stuff
}
@override
Future<void> onResume() async {
await super.onResume();
// do some stuff
}
@override
Future<void> onPause() async {
// do some stuff
await super.onPause();
}
@override
Future<void> onDestroy() async {
// do some stuff
await super.onDestroy();
}
}