尝试显示来自 Firebase Firestore 的数据

时间:2021-05-12 07:28:25

标签: firebase flutter firebase-realtime-database google-cloud-firestore snapshot

我正在尝试显示我为其创建了 Crud 文件的 Firebase Firestore 中的数据。

我在 body.dart 文件中尝试了不同的东西,但我不断收到循环进度条和一些错误。

Accessing hidden method Lsun/misc/Unsafe;

多次

这是body.dart

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:masterpass/Screens/Passwords/components/password_list.dart';
import 'package:masterpass/Services/crud.dart';

class Body extends StatefulWidget {
  @override
  _BodyState createState() => _BodyState();
}

class _BodyState extends State<Body> {
  CrudMethods crudMethods = new CrudMethods();

  QuerySnapshot passSnapshot;

  @override
  void initState() {
    super.initState();
    crudMethods.getData().then((result) {
      passSnapshot = result;
    });
  }

  @override
  Widget build(BuildContext context) {
    return PasswordList(passSnapshot: passSnapshot);
  }
}

密码列表.dart

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:masterpass/Screens/Passwords/components/password_tile.dart';

class PasswordList extends StatelessWidget {
  const PasswordList({
    Key key,
    @required this.passSnapshot,
  }) : super(key: key);

  final QuerySnapshot<Object> passSnapshot;

  @override
  Widget build(BuildContext context) {
    return Container(
      child: passSnapshot != null
          ? Column(
              children: [
                ListView.builder(
                  itemCount: passSnapshot.docs.length,
                  shrinkWrap: true,
                  itemBuilder: (context, index) {
                    return PasswordTile(
                      username: passSnapshot.docs[index].get('username'),
                      website: passSnapshot.docs[index].get('url'),
                    );
                  },
                )
              ],
            )
          : Container(
              child: CircularProgressIndicator(),
            ),
    );
  }
}

这是 crud.dart

import 'package:cloud_firestore/cloud_firestore.dart';

class CrudMethods {
  Future<void> addData(passwordData) async {
    FirebaseFirestore.instance
        .collection("passwords")
        .add(passwordData)
        .catchError((e) {
      print(e);
    });
  }

  getData() async {
    return await FirebaseFirestore.instance.collection("passwords").get();
  }
}

为了更好地理解代码:GitHub Repo

1 个答案:

答案 0 :(得分:0)

我发现了 2 个与您遇到的错误相关的 Github 问题,一个在 Firebase 中,一个在 Flutter 中,我认为原因是后一个,因此您可能需要关注该线程用于更新,因为这实际上被认为是 Android 问题。

不过,您可以在 Firebase Github 问题中尝试建议的解决方法,即在您的 AndroidManifest.xml 文件中添加(或更改,如果您已经拥有)此标签:

<application android:allowBackup="false">

然后运行以下命令:

flutter clean
flutter run
flutter create .