Saltearse al contenido

RtDependencyLifecycle

Esta página aún no está disponible en tu idioma.

RtDependencyLifecycle is a class that provides a way to observe the lifecycle of a dependency.

Syntax

abstract class RtDependencyLifecycle {
void onCreated() {}
void onWillMount() {}
void onDidMount() {}
void onWillUpdate(RtState state) {}
void onDidUpdate(RtState state) {}
void onWillUnmount() {}
void onDidUnmount() {}
}

Methods

  • onCreated : Called when the dependency is created. This is the first lifecycle method invoked.
  • onWillMount (only in flutter_reactter): Called just before the dependency is mounted. Useful for pre-mount setup.
  • onDidMount (only in flutter_reactter): Called immediately after the dependency is mounted. Ideal for post-mount initialization.
  • onWillUpdate : Called before the dependency is updated. The parameter is the state ( RtState ) that triggered the update. Use this to react to state changes before they take effect.
  • onDidUpdate : Called after the dependency is updated. The parameter is the state ( RtState ) that triggered the update. Use this to react to state changes after they take effect.
  • onWillUnmount (only in flutter_reactter): Called just before the dependency is unmounted. Useful for cleanup tasks.
  • onDidUnmount (only in flutter_reactter): Called immediately after the dependency is unmounted. Ideal for final cleanup or resource release.

Example

Here’s an example of a simple RtDependencyLifecycle implementation:

1
import 'package:flutter_reactter/flutter_reactter.dart';
2
3
class CounterController extends RtDependencyLifecycle {
4
final count = Signal(0);
5
6
void increment() {
7
count.value++;
8
}
9
10
void decrement() {
11
count.value--;
12
}
13
14
@override
15
void onCreated() {
16
print('CounterController initialized');
17
}
18
19
@override
20
void onDidMount() {
21
print('CounterController mounted');
22
}
23
24
@override
25
void onWillMount() {
26
print('CounterController will mount');
27
}
28
29
@override
30
void onWillUpdate(RtState state) {
31
print('CounterController will update by ${state.runtimeType}');
32
}
33
34
@override
35
void onDidUpdate(RtState state) {
36
print('CounterController did update by ${state.runtimeType}');
37
}
38
39
@override
40
void onWillUnmount() {
41
print('CounterController will unmount');
42
}
43
44
@override
45
void onDidUnmount() {
46
print('CounterController did unmount');
47
}
48
}
1
import 'package:flutter/material.dart';
2
import 'package:flutter_reactter/flutter_reactter.dart';
3
import 'counter.dart';
4
5
class CounterView extends StatelessWidget {
6
const CounterView({Key? key}) : super(key: key);
7
8
@override
9
Widget build(BuildContext context) {
10
final showCounter = Signal(false);
11
12
return Scaffold(
13
appBar: AppBar(
14
title: const Text("Counter - Lifecycle using RtDependencyLifecycle"),
15
),
16
body: RtSignalWatcher(
17
builder: (context, child) {
18
return Center(
19
child: Column(
20
mainAxisAlignment: MainAxisAlignment.center,
21
children: [
22
ElevatedButton(
23
onPressed: () => showCounter(!showCounter.value),
24
child: showCounter.value
25
? const Text('Hide counter')
26
: const Text('Show Counter'),
27
),
28
const SizedBox(height: 8),
29
if (showCounter.value) const Counter(),
30
],
31
),
32
);
33
},
34
),
35
);
36
}
37
}
1
import 'package:flutter/material.dart';
2
import 'package:flutter_reactter/flutter_reactter.dart';
3
4
import 'counter_controller.dart';
5
6
class Counter extends StatelessWidget {
7
const Counter({Key? key}) : super(key: key);
8
9
@override
10
Widget build(BuildContext context) {
11
// Provide the `CounterController` dependency to the widget tree
12
return RtProvider<CounterController>(
13
() => CounterController(),
14
builder: (context, counterController, child) {
15
return Row(
16
mainAxisSize: MainAxisSize.min,
17
children: [
18
ElevatedButton(
19
onPressed: counterController.decrement,
20
child: const Icon(Icons.remove),
21
),
22
const SizedBox(width: 8),
23
// Observe the `count` property of the `counterController`
24
// and rebuild the widget tree when the `count` value changes
25
RtConsumer<CounterController>(
26
listenStates: (counterController) => [counterController.count],
27
builder: (context, counterController, child) {
28
return Text("${counterController.count}");
29
},
30
),
31
const SizedBox(width: 8),
32
ElevatedButton(
33
onPressed: counterController.increment,
34
child: const Icon(Icons.add),
35
),
36
],
37
);
38
},
39
);
40
}
41
}
1
import 'package:flutter/material.dart';
2
import 'counter_view.dart';
3
4
void main() {
5
runApp(MyApp());
6
}
7
8
class MyApp extends StatelessWidget {
9
@override
10
Widget build(BuildContext context) {
11
return MaterialApp(
12
home: CounterView(),
13
);
14
}
15
}