You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter加载Firebase Firestore数据一直显示进度条且报Unsafe错误如何解决?

问题原因

  1. 页面永久显示加载进度条的核心原因:initState中异步获取到Firestore数据后,仅对passSnapshot变量赋值,未调用setState方法触发StatefulWidget的重绘逻辑,页面始终使用初始值null的passSnapshot渲染,因此一直显示进度条。
  2. 控制台抛出Accessing hidden method Lsun/misc/Unsafe;的原因:该警告是Android 9及以上系统对隐藏API调用的限制提示,由cloud_firestore SDK内部依赖逻辑触发,属于非致命警告,通常不会影响正常功能。

修复方案

1. 核心逻辑修复(解决永久加载问题)

修改body.dart中initState的异步回调逻辑,赋值完成后调用setState触发页面重绘,同时补充异常捕获逻辑:

@override
void initState() {
  super.initState();
  crudMethods.getData().then((result) {
    setState(() {
      passSnapshot = result;
    });
  }).catchError((e) {
    print("数据获取失败: $e");
  });
}

2. 可选优化项

  • 为crud.dart的getData方法明确返回类型,避免类型推断异常:
Future<QuerySnapshot> getData() async {
  return await FirebaseFirestore.instance.collection("passwords").get();
}
  • 修复Password_List.dart中ListView滑动冲突问题,补充physics参数:
ListView.builder(
  physics: const NeverScrollableScrollPhysics(),
  itemCount: passSnapshot.docs.length,
  shrinkWrap: true,
  itemBuilder: (context, index) {
    return PasswordTile(
      username: passSnapshot.docs[index].get('username'),
      website: passSnapshot.docs[index].get('url'),
    );
  },
)

3. 警告处理

Accessing hidden method警告无需额外处理,若想消除可将pubspec.yaml中的cloud_firestore依赖升级到最新稳定版即可。

内容的提问来源于stack exchange,提问作者Pranjal Chaplot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 14:54:03