Call back functions in Flutter
In Flutter, callbacks are often used to pass functions as arguments to other functions or widgets. Callbacks are a way to handle events or communicate between different parts of your application. Here's how you can use callback functions in Flutter-
1. **Define the Callback Function:**
Start by defining the callback function. This is the function that will be called when a certain event occurs. For example:
```dart
typedef MyCallback = void Function(String result);
```
Here, `MyCallback` is a typedef for a function that takes a `String` argument and returns `void`.
2. **Pass the Callback Function:**
You can pass the callback function as an argument to another function or widget. For instance, if you're creating a custom widget that needs to notify the parent when something happens, you would pass the callback as an argument to the widget constructor:
```dart
class MyCustomWidget extends StatelessWidget {
final MyCallback callback;
MyCustomWidget({required this.callback});
// Widget build method and other code...
}
```
3. **Call the Callback Function:**
Inside your widget or function, when the event you're interested in occurs, you can call the callback function. This allows you to pass data or notify the parent widget about the event:
```dart
class MyCustomWidget extends StatelessWidget {
final MyCallback callback;
MyCustomWidget({required this.callback});
void _onButtonPressed() {
// Some event occurs, call the callback with data
callback("Button Pressed");
}
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: _onButtonPressed,
child: Text("Press Me"),
);
}
}
```
4. **Using the Callback:**
In the parent widget, where you're using your custom widget, you can provide the callback function to handle the event:
```dart
class ParentWidget extends StatelessWidget {
void _handleCallback(String result) {
print("Callback Result: $result");
// Do something with the result
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Callback Example")),
body: Center(
child: MyCustomWidget(callback: _handleCallback),
),
),
);
}
}
```
In this example, when the button in the `MyCustomWidget` is pressed, the `_onButtonPressed` method is called, which in turn calls the callback function provided by the parent widget. This allows you to pass data or trigger actions in the parent widget based on the event in the child widget.
Remember that callbacks are a way to achieve communication between different parts of your app, but as your app grows in complexity, you might explore other patterns like using state management solutions (like Provider, Bloc, Riverpod) for more organized and scalable communication between widgets.
Comments
Post a Comment