mia*_*shu 2 pull-to-refresh flutter
我在页面上添加了RefreshIndicator,但是在刷新时没有可见的指示器。代码如下:
class HomePage extends StatefulWidget {
HomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: LocalGalleryTab(),
);
}
}
class LocalGalleryTab extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _LocalGalleryState();
}
}
class _LocalGalleryState extends State<LocalGalleryTab> {
@override
Widget build(BuildContext context) {
return new Container(child: new Center(
child: new RefreshIndicator(
child: Text("Local Gallery"),
onRefresh: _refreshLocalGallery,
),
));
}
Future<Null> _refreshLocalGallery() async{
print('refreshing stocks...');
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用RefreshIndicator?Flutter 文档没有提供太多信息。
Ven*_*h A 80
默认情况下,刷新指示器不适用于短列表,因此将以下内容添加到 ListView.builder
physics: const AlwaysScrollableScrollPhysics(),
Run Code Online (Sandbox Code Playgroud)
Par*_*iya 37
使用AlwaysScrollableScrollPhysics()将确保滚动视图始终可滚动,因此可以触发RefreshIndicator.
现在我认为创建滚动物理BouncingScrollPhysics(parent: AlwaysScrollableScrollPhysics)而不仅仅是AlwaysScrollableScrollPhysics()滚动物理。因为 BouncingScrollPhysics 适用于反弹的短列表。现在需要为预期的行为包含 AlwaysScrollableScrollPhysics。
RefreshIndicator(
onRefresh: _onRefresh,
child: ListView(
padding: EdgeInsets.all(8.0),
physics: const BouncingScrollPhysics(parent: AlwaysScrollableScrollPhysics()),
children: _listData.map((i) {
return ListTile(
title: Text("Item $i"),
);
}).toList(),
)
);
Run Code Online (Sandbox Code Playgroud)
ahm*_*tab 27
根据设计,RefreshIndicator适用于ListView.
但是,如果你想使用RefreshIndicator非滚动的小部件,你可以用你的widget到Stack与ListView:
RefreshIndicator(
onRefresh: () {},
child: Stack(
children: <Widget>[ListView(), YOUR_CHILD_WIDGET],
),
),
Run Code Online (Sandbox Code Playgroud)
小智 18
RefreshIndicator(
onRefresh: _onRefresh,
child:SingleChildScrollView(
physics: AlwaysScrollableScrollPhysics(),
child: ListView(
padding: EdgeInsets.all(8.0),
children: _listData.map((i) {
return ListTile(
title: Text("Item $i"),
);
}).toList(),
)
)
);
Run Code Online (Sandbox Code Playgroud)
在 SingleChildScrollView 中添加物理
小智 7
您需要在其中添加滚动子项,RefreshIndicator
请参见下面的示例
class HomePage extends StatefulWidget {
HomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: LocalGalleryTab(),
);
}
}
class LocalGalleryTab extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _LocalGalleryState();
}
}
class _LocalGalleryState extends State<LocalGalleryTab> {
@override
Widget build(BuildContext context) {
return new Container(child: new Center(
child: new RefreshIndicator(
child: ListView(
children: List.generate(50, (f) => Text("Item $f")),
),
onRefresh: _refreshLocalGallery,
),
));
}
Future<Null> _refreshLocalGallery() async{
print('refreshing stocks...');
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3875 次 |
| 最近记录: |