通知可以用来监听事件,用来刷新页面,先看通知的源码:
class NotificationListener<T extends Notification> extends ProxyWidget {
/// Creates a widget that listens for notifications.
const NotificationListener({
super.key,
required super.child,
this.onNotification,
});
final NotificationListenerCallback<T>? onNotification;
Element createElement() {
return _NotificationElement<T>(this);
}
}
从源码可以看出,一般使用方式需要先创建一个继承自 Notification
的类,例如:
class MyNotification extends Notification {
String value;
dynamic data;
MyNotification(this.value, {this.data});
}
使用 NotificationListener<MyNotification>()
,onNotification
是一个通知回调,其中有个参数 notification
,也就是 MyNotification
的实例对象:
Widget build(BuildContext context) {
return Scaffold(
body: Container(
color: Colors.white,
child: NotificationListener<MyNotification>(
onNotification: (notification) {
if (notification.value == "todo") {
/// do something
}
/// retuen true
return true;
},
/// 子组件
child: ...,
),
),
);
}
在子组件中发送通知:文章来源:https://www.toymoban.com/news/detail-574877.html
ElevatedButton(
/// 按钮点击时分发通知
onPressed: () => MyNotification("todo").dispatch(context),
child: Text("Send Notification"),
);
如果在同一个类中获取 dispatch(context)
获取 context
可能会出问题,可以使用嵌套一层 Builder
组件来获取 context
:文章来源地址https://www.toymoban.com/news/detail-574877.html
Builder(
builder: (context) {
return ...;
},
);
到了这里,关于Flutter Notification (通知)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!