flutter - 在 Future Builder 中全屏显示圆形进度条
问题描述
下面的代码显示了我未来的构建器,它进行 API 调用并返回数据。我希望 CircularProgressIndicator 占据设备的整个屏幕。问题是未来的构建器在页面视图中,它没有占据整个屏幕。任何想法让进度条全屏显示?
提前致谢。
Widget serverRequest(HomeViewModel vm, int position) {
return FutureBuilder(
future: vm.fetchList(
vm.getDataList.length, NUMBER_OF_ARTICLES_PER_PAGE),
builder: (context, projectSnap) {
if (projectSnap.connectionState == ConnectionState.done) {
return ThreeArticleItem();
} else
return Container(child: Center(child: CircularProgressIndicator()));
},
);
}
解决方案
请看下面的代码。CircularProgressIndicator 显示在屏幕中间。在未来完成之前,用户无法与 CircularProgressIndicator 下方的任何小部件进行交互。IgnorePointer 小部件用于停止用户事件,直到未来完成。
import 'package:flutter/material.dart';
final Color darkBlue = const Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool ignoring = true;
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: const Text("Flutter Demo"),
),
body: Stack(
children: [
IgnorePointer(
ignoring: ignoring,
child: ListView(
children: List.generate(
30, (index) => ListTile(title: Text("Tile # $index")))),
),
FutureBuilder<bool>(
future: Future.delayed(const Duration(seconds: 10), () {
setState(() => ignoring = false);
return true;
}),
builder: (context, snapshot) {
return (snapshot.hasData)
? const Offstage()
: const Center(child: CircularProgressIndicator());
},
),
],
),
),
);
}
}
推荐阅读
- typo3 - TYPO3 将 vom 11.2.0 升级到 11.5.0 - 表单扩展和 EXT 的问题:前端中的路径
- javascript - 有没有办法循环遍历 HTML 测验以从“laber for”中获取值为“true”的文本?
- asp.net-mvc - 在 ASP.NET MVC 应用程序的 x 可编辑文本字段中自动完成
- r - cldList() 函数在添加紧凑型字母显示时表现异常
- amazon-cloudfront - VideoJS - 重定向具有预签名 URL 的请求
- java - 禁用 1/yes/on 和 0/no/off 并仅允许通过 query-param 或 path-param 传递 true/false
- postgresql - postgresql jsonb - 从整数列表到对象列表
- python - 使用 Apache (mod_wsgi) 部署 Flask 应用程序的问题 - 不断加载
- powershell - 将多个 Get-SMB 请求的结果传递到 csv 文件的 Powershell 脚本
- notifications - 如何防止双击android推送通知动作