parent
2144a8964f
commit
93b90362fd
@ -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 {
|
|||||||
|
|
||||||
/// 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 {
|
|||||||
|
|
||||||
/// 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 {
|
|||||||
///
|
///
|
||||||
/// 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).
|
||||||
|
Loading…
x
Reference in New Issue
Block a user