我知道ListView或SingleChildScrollView RefreshIndicator本身就可以正常工作,但我想在不滚动的页面上使用RefreshIndicator。这是否可能,如果是这样,怎么样?
ListView
SingleChildScrollView
RefreshIndicator
您必须执行以下操作:
使用属性physics设置为AlwaysScrollableScrollPhysics()的SingleChildScrollView。
physics
AlwaysScrollableScrollPhysics()
确保它的孩子的高度与屏幕的大小相同,您可以使用MediaQuery.of(context).size.height获得。
MediaQuery.of(context).size.height
完整的例子:
classs MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return RefreshIndicator( onRefresh: () {}, child: SingleChildScrollView( physics: AlwaysScrollableScrollPhysics(), child: Container( child: Center( child: Text('Hello World'), ), height: MediaQuery.of(context).size.height, ), ), ); } }
所以在我的情况下,我想在空列表中显示占位符:
RefreshIndicator( child: Stack( children: <Widget>[ Center( child: Text("The list is empty"), ), ListView() ], ), onRefresh: () {}, )
没有不滚动的页面是否可能?
-No。
请阅读 RefreshIndicator 中参数 child 的文档:
树中此小部件下方的小部件。
刷新指示器将堆叠在此孩子的顶部。当孩子的 Scrollable 后代为 over-scrolled 时,指示符将出现。
通常是[9]或[10]。
有 work-around?
-Yes
您只能在 Listview 的子列表中放置一个小部件:
new RefreshIndicator( child: new ListView( children: <Widget>[ new Text('This is child with refresh indicator'), ], ), onRefresh: () {}, )
3 回答
您必须执行以下操作:
使用属性
physics
设置为AlwaysScrollableScrollPhysics()
的SingleChildScrollView
。确保它的孩子的高度与屏幕的大小相同,您可以使用
MediaQuery.of(context).size.height
获得。完整的例子:
所以在我的情况下,我想在空列表中显示占位符:
没有不滚动的页面是否可能?
-No。
请阅读 RefreshIndicator 中参数 child 的文档:
刷新指示器将堆叠在此孩子的顶部。当孩子的 Scrollable 后代为 over-scrolled 时,指示符将出现。
通常是[9]或[10]。
有 work-around?
-Yes
您只能在 Listview 的子列表中放置一个小部件: