Commit 93b90362 authored by Adam Barth's avatar Adam Barth Committed by GitHub

Add more breadcrumbs in Notification docs (#9245)

Fixes #7519
parent 2144a896
...@@ -15,6 +15,16 @@ import 'framework.dart'; ...@@ -15,6 +15,16 @@ import 'framework.dart';
typedef bool NotificationListenerCallback<T extends Notification>(T notification); typedef bool NotificationListenerCallback<T extends Notification>(T notification);
/// A notification that can bubble up the widget tree. /// A notification that can bubble up the widget tree.
///
/// You can determine the type of a notification using the `is` operator to
/// check the [runtimeType] of the notification.
///
/// To listen for notifications in a subtree, use a [NotificationListener].
///
/// To send a notification, call [dispatch] on the notification you wish to
/// send. The notification will be delivered to any [NotificationListener]
/// widgets with the appropriate type parameters that are ancestors of the given
/// [BuildContext].
abstract class Notification { abstract class Notification {
/// Applied to each ancestor of the [dispatch] target. /// Applied to each ancestor of the [dispatch] target.
/// ///
...@@ -39,7 +49,9 @@ abstract class Notification { ...@@ -39,7 +49,9 @@ abstract class Notification {
/// Start bubbling this notification at the given build context. /// Start bubbling this notification at the given build context.
/// ///
/// To receive notifications, use a [NotificationListener]. /// The notification will be delivered to any [NotificationListener] widgets
/// with the appropriate type parameters that are ancestors of the given
/// [BuildContext].
void dispatch(BuildContext target) { void dispatch(BuildContext target) {
assert(target != null); // Only call dispatch if the widget's State is still mounted. assert(target != null); // Only call dispatch if the widget's State is still mounted.
target.visitAncestorElements(visitAncestor); target.visitAncestorElements(visitAncestor);
...@@ -68,6 +80,9 @@ abstract class Notification { ...@@ -68,6 +80,9 @@ abstract class Notification {
/// A widget that listens for [Notification]s bubbling up the tree. /// A widget that listens for [Notification]s bubbling up the tree.
/// ///
/// Notifications will trigger the [onNotification] callback only if their
/// [runtimeType] is a subtype of `T`.
///
/// To dispatch notifications, use the [Notification.dispatch] method. /// To dispatch notifications, use the [Notification.dispatch] method.
class NotificationListener<T extends Notification> extends StatelessWidget { class NotificationListener<T extends Notification> extends StatelessWidget {
/// Creates a widget that listens for notifications. /// Creates a widget that listens for notifications.
...@@ -122,6 +137,14 @@ class NotificationListener<T extends Notification> extends StatelessWidget { ...@@ -122,6 +137,14 @@ class NotificationListener<T extends Notification> extends StatelessWidget {
/// ///
/// Useful if, for instance, you're trying to align multiple descendants. /// Useful if, for instance, you're trying to align multiple descendants.
/// ///
/// To listen for notifications in a subtree, use a
/// [NotificationListener<LayoutChangedNotification>].
///
/// To send a notification, call [dispatch] on the notification you wish to
/// send. The notification will be delivered to any [NotificationListener]
/// widgets with the appropriate type parameters that are ancestors of the given
/// [BuildContext].
///
/// In the widgets library, only the [SizeChangedLayoutNotifier] class and /// In the widgets library, only the [SizeChangedLayoutNotifier] class and
/// [Scrollable] classes dispatch this notification (specifically, they dispatch /// [Scrollable] classes dispatch this notification (specifically, they dispatch
/// [SizeChangedLayoutNotification]s and [ScrollNotification]s respectively). /// [SizeChangedLayoutNotification]s and [ScrollNotification]s respectively).
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment