Skip to content

Added On Dispose Info #228

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Dec 12, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions docs/resources/ui/components/component-lifecycle.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,13 @@ created.
Your component can also respond to certain keypress events. For more details on setting this up, see [this section on
keyboard shortcuts](/resources/ui/pages/page-lifecycle#on-shortcut-press-action-trigger).

### On Dispose [Action Trigger]
The **On Dispose** action trigger for components allows you to define actions that execute when the page containing the component is navigated away or removed from memory. This is particularly useful for performing cleanup tasks specific to the component, such as closing streams, canceling subscriptions, or releasing resources, ensuring efficient memory and resource management.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

closing streams, canceling subscriptions --> we cant create streams or subscriptions in FlutterFlow anyway (from actions I mean), so this wont make sense for our users. A better example would be with actions that are a start or stop action, like start periodic action that goes throughout the lifecycle of the component should be stopped in onDispose trigger.


:::info
The **On Dispose** action trigger is always executed before the [**parent page’s On Dispose**](../pages/page-lifecycle.md#on-dispose-action-trigger). This ensures that the component cleans up its resources first, allowing the parent to finalize its disposal without dependencies on the child.
:::

## Component state

:::note[STATE VARIABLES]
Expand Down
Binary file added docs/resources/ui/pages/imgs/page-on-dispose.avif
Binary file not shown.
12 changes: 12 additions & 0 deletions docs/resources/ui/pages/page-lifecycle.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,18 @@ For instance, if you have a shortcut assigned to the letter "C" and a user tries
To handle this, you can enable the option on the `TextField` widget to bypass keyboard shortcuts. However, it’s generally better to assign more unique combinations, like Cmd + C, which are less likely to conflict with normal typing in a text field.
:::

### On Dispose [Action Trigger]

The **On Dispose** action trigger allows you to define actions that execute when a page is navigated away from or removed from memory. It is particularly useful for performing cleanup tasks, such as closing long-lived connections, canceling subscriptions, or releasing resources, to prevent memory leaks and ensure efficient resource management.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment for this.


:::tip[Possible Use Cases]

- **Cleaning Up Resources:** Use this action trigger to cancel timers, close database connections, or unsubscribe from streams to prevent memory leaks and unnecessary processing.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only first example makes sense. The rest are in relation to Flutter.

- **Saving Data:** Save user inputs, application state, or progress to local storage or a database before the page is removed. This ensures that no critical information is lost during navigation or app lifecycle changes.
- **Logging or Analytics:** Track user behavior or log events (e.g., page exit or time spent on a page) to monitor user engagement and improve the application experience.
:::
![page-on-dispose.avif](imgs/page-on-dispose.avif)

## Page state

:::note[State Variables]
Expand Down
Loading