我正在构建一个具有不同问题类型的自学应用程序。现在,其中一个问题有一个包含文档参考列表的字段:
在 Flutter 中,我有以下代码:
Query<Map<String, dynamic>> questionsRef = firestore
.collection('questions')
.where('lesson_id', isEqualTo: lessonId);
await questionsRef.get().then((snapshot) {
snapshot.docs.forEach((document) {
var questionTemp;
switch (document.data()['question_type']) {
....
case 'cards':
questionTemp = CardsQuestionModel.fromJson(document.data());
break;
....
}
questionTemp.id = document.id;
questions.add(questionTemp);
});
});
Run Code Online (Sandbox Code Playgroud)
现在,通过“questionTemp”,我可以访问所有字段(lesson_id、options、question_type 等),但是当涉及“cards”字段时,我如何访问该文档引用中的数据?
有没有办法告诉 firestore.instance 自动从这些引用中获取数据?或者我需要为每个电话重新拨打电话吗?如果是这样,我该怎么做?
感谢您提前的支持!
firebase google-cloud-platform flutter google-cloud-firestore
因此,我开始使用 sdk: ">=2.16.2 <3.0.0" 和 Firebase 集成制作一个 Flutter 应用程序。我在 main.dart 上有以下“authStateChanges()”代码:
if (snapshot.connectionState == ConnectionState.done) {
FirebaseAuth.instance.authStateChanges().listen((User? user) {
if (user == null) {
Navigator.of(context).pushReplacementNamed('login');
} else {
Navigator.of(context).pushReplacementNamed('home');
}
});
}
Run Code Online (Sandbox Code Playgroud)
它在加载应用程序时第一次工作,但如果用户登录(或退出),则导航器上会出现“未处理的异常:空值检查运算符”。
这是完整的 main.dart 代码:
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:pollux_android/src/pages/error_page.dart';
import 'package:pollux_android/src/pages/loading_page.dart';
import 'package:pollux_android/src/routes/routes.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
}
class _MyAppState extends State<MyApp> {
final …Run Code Online (Sandbox Code Playgroud)