Skip to content

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.

Implementations

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();
  }
}