我在 Github 上下载了 Flutter 聊天应用程序,并从中学习。最初的开发人员使用 Firestore,但在我的中,我收到错误“未定义名称‘Firestore’。 尝试将名称更正为已定义的名称,或者像这样定义名称。
我搜索了这个并阅读了 cloudfirestore 文档,我们可以使用“FirebaseFirestore”(也许我错了)。我正在学习用 flutter 编写后端,到目前为止我做了 UI 部分。所以这是我第一次尝试使用 Flutter 学习后端。
handleSignIn() async {
final res = await googleSignIn.signIn();
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
final auth = await res.authentication;
final credentials = GoogleAuthProvider.getCredential(
idToken: auth.idToken, accessToken: auth.accessToken);
final firebaseUser =
(await firebaseAuth.signInWithCredential(credentials)).user;
if (firebaseUser != null) {
final result = (await Firestore.instance
.collection('users')
.where('id', isEqualTo: firebaseUser.uid)
.getDocuments())
.documents;
if (result.length == 0) {
///new user
Firestore.instance
.collection('users')
.document(firebaseUser.uid)
.setData({
"id": firebaseUser.uid,
"name": firebaseUser.displayName,
"profile_pic": firebaseUser.photoURL,
"created_at": DateTime.now().millisecondsSinceEpoch,
});
sharedPreferences.setString("id", firebaseUser.uid);
sharedPreferences.setString("name", firebaseUser.displayName);
sharedPreferences.setString("profile_pic", firebaseUser.photoURL);
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => Home()));
} else {
///Old user
sharedPreferences.setString("id", result[0]["id"]);
sharedPreferences.setString("name", result[0]["name"]);
sharedPreferences.setString("profile_pic", result[0]["profile_pic"]);
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => Home()));
}
}
}
你们能解释一下如何解决这个错误吗?
谢谢。
答案 0 :(得分:3)
我认为您没有在 pubspec.yml 中添加 cloud_firestore 依赖项。还有一件事,
您使用的是最新版本,请使用“FirebaseFirestore”而不是“Firestore”。
答案 1 :(得分:1)
转到 Flutter 项目中的 pubspec.yaml
文件。
在依赖项下面添加这个(cloud_firestore: ^0.16.0
),如下图所示。
如果您使用 VScode,则可以跳过此步骤。如果您在更新后保存文件,它会自动执行此操作。
如果不是,请在您的项目中执行 flutter pub get
。 (这会获取添加到项目中的新包,在我们的示例中为 cloud_firestore
)
确保您能够在出现错误的文件中看到此导入。
import 'package:cloud_firestore/cloud_firestore.dart';
Firestore.instance
-> FirebaseFirestore.instance
。