小编ash*_*two的帖子

Firebase Cloud Firestore 在 Flutter 中获取地图数组

我正在尝试使用 Firebase Cloud Firestore 作为我的数据库在 Flutter 中构建一些东西。我有一个集合(“学生”),其中包含每个学生的文档。

在每个学生文档中都有一个数组,其中包含学生的分数图。见下文。

Firebase Cloud Firestore 文档的屏幕截图,其中包含一组(等级)地图(与学生获得的分数相关的各种字段)

在 Flutter 中,我有以下课程:

class Student {
  final String name;
  final String subject;
  final List<Mark> marks;

  Student({this.name, this.subject, this.marks});
}

class Mark {
  final int mark;
  final String grade;
  final String markedBy;
  final String feedback;

  Mark({this.mark, this.grade, this.markedBy, this.feedback});
}

Run Code Online (Sandbox Code Playgroud)

我正在使用 Provider 流检索数据,如下所示:

  Stream<List<Student>> get firebaseStudents {
    return Firestore.instance.collection('students').snapshots().map(_firebaseStudentsFromSnapshot);
  }

  List<Student> _firebaseStudentsFromSnapshot(QuerySnapshot snapshot) {
    return snapshot.documents.map((doc) {
      return Student(
        name: doc.data['name'] ?? '',
        subject: doc.data['subject'] ?? '',

        //trying to figure out how to …
Run Code Online (Sandbox Code Playgroud)

dart firebase flutter google-cloud-firestore

7
推荐指数
1
解决办法
3609
查看次数

Flutter Getx 构建器不更新 UI

我尝试将 GetX Builder 与控制器中的 bool 结合使用,在获取数据时显示加载旋转器,然后再显示数据。

将更新打印到 bool 显示它已完成加载并更改变量,但 UI 永远不会更新以反映这一点。

控制器

class AuthController extends GetxController {

  //final RxBool isLoading = true.obs;
  //var isLoading = true.obs;

  final Rx<bool> isLoading = Rx<bool>(true);

  setLoading(bool status) {
    isLoading.value = status;
    print(isLoading.value);
    update();
  }


  fetchUserData() async {
    setLoading(true);
    _firebaseUser.bindStream(_auth.authStateChanges());
    if (_auth.currentUser != null) {
      bool profileRetrieved =
          await FirestoreDB().getUserProfile(_auth.currentUser!.uid).then((_) {
        return true;
      });

      setLoading(!profileRetrieved);

    }
  }
}
Run Code Online (Sandbox Code Playgroud)

个人资料页

class ProfileCard extends StatelessWidget {
  const ProfileCard({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) { …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-getx

2
推荐指数
1
解决办法
4134
查看次数