## 1.上面标题，下面列表，怎么布局

要放一个标题和列表,正确的做法是采取CustomScrollView里放一个SliverToBoxAdapter和SliverList

## 2.使用pull_to_refresh插件做下拉刷新，上拉加载，child应该是什么？

自1.4.3,child属性从ScrollView转变为Widget,但是这并不意味着对于所有Widget处理是一样的。SmartRefresher内部实现机制并非是类如NestedScrollView
这里的处理机制分了两个大类,第一类是继承于ScrollView的那一类组件,目前来说,就只有这三种,ListView,GridView,CustomScrollView。第二类,是非继承于ScrollView的那类组件,一般是存放空视图,非滚动视图(非滚动转化为滚动),PageView,无需你自己通过LayoutBuilder估计高度。
对于第一类的处理机制是从内部"非法"取出slivers。第二类,则是把child直接放进类如SliverToBoxAdapter。通过前后拼接header和footer组成slivers,然后SmartRefresher内部把slivers放进CustomScrollView,你可以把SmartRefresher理解成CustomScrollView,因为内部就是返回CustomScrollView。所以,这里child结点是不是ScrollView区别是很大的。

// 错误的做法
SmartRefresher(
   child: ScrollBar(
         child: ListView(
            ....
   )
   )
)

// 正确的做法
ScrollBar(
   child: SmartRefresher(
         child: ListView(
            ....
   )
   )
)

// 错误的方法
SmartRefresher(
   child:MainView()
)

class MainView extends StatelessWidget{
      Widget build(){
         return ListView(
            ....
         );
      }

}