当前位置:   article > 正文

Flutter笔记--Notification_flutter onnotification

flutter onnotification

        这一节主要介绍通知组件,通知(Notification)是Flutter中一个重要的机制,在widget树中,每一个节点都可以分发通知,通知会沿着当前节点向上传递,所有父节点都可以通过NotificationListener来监听通知。Flutter中将这种由子向父的传递通知的机制称为通知冒泡(Notification Bubbling)。通知冒泡和用户触摸事件冒泡是相似的,但有一点不同:通知冒泡可以中止,但用户触摸事件不行。应用场景: 界面UI相对复杂,如堆叠效果,如初始时Positioned中Image组件作为Page的某一部分,当界面滑动时,原本Positioned中的图片组件也需要跟着滑动,这时候就可以通过通知来实现,还比如数值的相加等。

栗子:

  1. class NotificationPage extends StatefulWidget {
  2. NotificationPage({Key key}) : super(key: key);
  3. _NotificationState createState() => _NotificationState();
  4. }
  5. class _NotificationState extends State<NotificationPage> {
  6. int numA;
  7. int numB;
  8. int result;
  9. @override
  10. Widget build(BuildContext context) {
  11. return
  12. GestureDetector(child: NotificationListener<CustomNotification>(
  13. onNotification: (notification) {
  14. setState(() {
  15. numA = notification.numA;
  16. numB = notification.numB;
  17. result = numA + numB;
  18. });
  19. //true 阻止冒泡 false 不阻止冒泡,父组件能够收到通知
  20. //return true;
  21. },
  22. child: Center(
  23. child: Column(children: <Widget>[
  24. Text("$numA +$numB = $result"),
  25. Builder(builder: (context) {
  26. return RaisedButton(
  27. child: Text("计算! "),
  28. onPressed: () {
  29. CustomNotification(Random().nextInt(100),Random().nextInt(100)).dispatch(context);
  30. });
  31. },)
  32. ],),
  33. )),)
  34. ;
  35. }
  36. }
  37. //自定义通知
  38. class CustomNotification extends Notification {
  39. int numA;
  40. int numB;
  41. CustomNotification(this.numA,this.numB);
  42. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/494023
推荐阅读
相关标签
  

闽ICP备14008679号