【发布时间】:2022-01-19 15:49:42
【问题描述】:
加载数据后循环进度指示器不会消失。
这是我使用进度指示器的代码
当我到达网格视图的末尾时,它应该加载其他数据,但是
进度指示器与它加载的内容相同,并且在获取数据后不会消失。
我尝试创建一个布尔 isLoading 并尝试将其更改为真或假,但找不到我可以这样做的地方
int pageNumber = 1;
String filterName = '';
class ShowsListDesign extends StatefulWidget {
@override
_ShowsListDesignState createState() => _ShowsListDesignState();
}
class _ShowsListDesignState extends State<ShowsListDesign> {
ScrollController controller = ScrollController();
ServicesClass service = ServicesClass();
bool isLoading = false;
@override
void initState() {
controller.addListener(listenScrolling);
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: service.getFilms('posts/$pageNumber/$filterName'),
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.hasData) {
return Stack(
alignment: Alignment.bottomCenter,
children: [
GridView.builder(
itemCount: snapshot.data.length,
gridDelegate: const
SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 250,
crossAxisSpacing: 24,
mainAxisSpacing: 24,
childAspectRatio: (3 / 5),
),
controller: controller,
itemBuilder: (context, index) {
return FilmsCard(
image: snapshot.data[index]['thumbnailUrl'],
title: snapshot.data[index]['title'],
year: snapshot.data[index]['year'],
);
},
),
FloatingActionButton(
onPressed: () {
scrollUp();
},
elevation: 24,
backgroundColor: PRIMARY,
child: const Text(
'Scroll Up',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
),
),
),
],
);
} else {
return const Center(
child: CircularProgressIndicator(),
);
}
},
);
}
void scrollUp() {
const double start = 0;
controller.animateTo(start,
duration: const Duration(seconds: 1, milliseconds: 50),
curve: Curves.easeIn);
}
void listenScrolling() {
if (controller.position.atEdge) {
final isTop = controller.position.pixels == 0;
if (isTop) {
} else {
setState(() {
pageNumber++;
ShowsListDesign();
});
}
}
}
}
【问题讨论】:
-
请在此处粘贴您的代码,以便为您提供适当的帮助
-
你能显示
listenScolling -
我更新了帖子检查代码
-
只是一个想法。尝试删除侦听器,看看是否有帮助。在我看来,经常调用 setState 会导致重新构建您的小部件,并且每次都会调用服务。
-
在我放听者之前问题就出现了
标签: flutter