【发布时间】:2022-01-19 19:48:44
【问题描述】:
我试过了
setState(() {isLoading = true})
//do something
setState(() {isLoading = false})
在 onTab(){}
但使用 setState 后,pdfFile 和 pdfController 等数据会被覆盖,并且应用不会推送到新路由。
好吧,我的问题是:如何向用户显示加载动画,如果加载完成,将下载的数据推送到屏幕?也许我需要一些没有 setState 的东西?我们有什么可能?
body: StreamBuilder(
stream: firebase.base
.collection('xxx')
.doc(firebase.auth.currentUser!.uid)
.collection("xxx")
.snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasData) {
final liste = snapshot.data!.docs;
return Column(
children: [
Container(
height: 400,
child: ListView.builder(
padding: const EdgeInsets.all(8),
itemCount: liste.length,
itemBuilder: (BuildContext context, int index) {
Map data = snapshot.data!.docs[index].data() as Map;
String fileName = data['fileName'];
String url = data['url'];
return GestureDetector(
onTap: () async {
http.Response pdfFile =
await http.get(Uri.parse(url));
final pdfController = PdfController(
document:
PdfDocument.openData(pdfFile.bodyBytes));
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
PdfViewScreen(pdfController, fileName)));
},
【问题讨论】: