Fultter专题系列工作生活

Flutter系列(四)《安全区域的处理以及滚动事件监听》

2019-07-04  本文已影响0人  清风徐来121

1. 安全区域处理

iOS11引入了safe area的概念,safe area 定义了视图的可视区域,保证在safe area 区域内的子view不会被遮挡。引出这个概念可能是因为iPhone x 的顶部刘海和底部的home操作区域的问题。本文将介绍如何使用 safe area进行布局。

比如:body使用ListView包裹的时候,就会出现顶部的安全区域就会空白留出来,这时需要我们处理掉

MediaQuery.removePadding(
                removeTop: true,  //这里可以对上下左右的安全区域处理
                context: context,
)

2. 滚动事件监听

NotificationListener(
                  onNotification: (scrollNotification){  //这里理解为一个匿名函数、或是iOS中的block更为贴切
                    if(scrollNotification is ScrollUpdateNotification && scrollNotification.depth == 0){
                      _onScroll(scrollNotification.metrics.pixels);
                    }
                  },

ScrollUpdateNotification判断是为了确保是由滚动触发的offset的改变,scrollNotification.depth == 0是表示监听的child的深度,怎么理解呢?例如我们监听的child是一个ListView,但是ListView里面又包含一层Banner,这时候就会监听两个scroll的滚动事件,depth是给到我们选择性的监听指定widget!

上一篇 下一篇

猜你喜欢

热点阅读