当前位置:   article > 正文

Flutter Notification (通知)_flutter 通知

flutter 通知

通知可以用来监听事件,用来刷新页面,先看通知的源码:

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);
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

从源码可以看出,一般使用方式需要先创建一个继承自 Notification 的类,例如:

class MyNotification extends Notification {
    String value;
  	dynamic data;
	MyNotification(this.value, {this.data});
}
  • 1
  • 2
  • 3
  • 4
  • 5

使用 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: ...,
        ),
      ),
    );
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在子组件中发送通知:

ElevatedButton(
	/// 按钮点击时分发通知
	onPressed: () => MyNotification("todo").dispatch(context),
	child: Text("Send Notification"),
);
  • 1
  • 2
  • 3
  • 4
  • 5

如果在同一个类中获取 dispatch(context) 获取 context 可能会出问题,可以使用嵌套一层 Builder 组件来获取 context

Builder(
	builder: (context) {
		return ...;
	},
);
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/493932
推荐阅读
相关标签
  

闽ICP备14008679号