颤振刷新指示器在只有一个页面时不起作用


只有一个页面时,Flutter RefreshIndicator不起作用。我用对了吗?谢谢如果用两个或多个页面更改pages,并在第一页上向下拖动,则指示器工作正常。但是当只有一个页面时,它就不能被拖下来。

示例代码:

void main() {
runApp(
MaterialApp(
title: 'Test',
home: Scaffold(
body: Bar(),
),
),
);
}
class Bar extends StatefulWidget {
@override
State<StatefulWidget> createState() => _BarState();
}
class _BarState extends State<Bar> {
List<Widget> pages;
final controller = PageController(initialPage: 0, keepPage: true);
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
pages = [_makePage('page 1')]; //, _makePage('page 2')];
return RefreshIndicator(
onRefresh: _onRefresh,
child: PageView(
controller: controller,
children: pages,
scrollDirection: Axis.vertical,
),
);
}
Future _onRefresh() async {
print('refresh!');
}
_makePage(String s) {
return Center(child: Text(s));
}
}

根据Flutter文档,这是RefreshIndicator的预期行为。

请参阅RefreshIndicator类

如果其可滚动的子体可以被过度滚动,即如果可滚动的内容大于其视口,则RefreshIndicator将出现。要确保RefreshIndicator始终显示,即使可滚动的内容适合其视口,也可以将可滚动的scrollable.physics属性设置为AlwaysScrollableScrollPhysics。

请参阅下面的工作代码:

import 'package:flutter/material.dart';
final Color darkBlue = const Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(
MaterialApp(
theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
debugShowCheckedModeBanner: false,
title: 'Test',
home: Scaffold(
body: Bar(),
),
),
);
}
class Bar extends StatefulWidget {
@override
State<StatefulWidget> createState() => _BarState();
}
class _BarState extends State<Bar> {
List<Widget> pages;
final controller = PageController(initialPage: 0, keepPage: true);
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
pages = [_makePage('page 1')]; //, _makePage('page 2')];
return RefreshIndicator(
onRefresh: _onRefresh,
child: PageView(
physics: const AlwaysScrollableScrollPhysics(),
controller: controller,
children: pages,
scrollDirection: Axis.vertical,
),
);
}
Future _onRefresh() async {
print('refresh!');
}
_makePage(String s) {
return Center(child: Text(s));
}
}

相关内容

最新更新