Firebase Web从Firestore获取数据的颤振

Firebase Web从Firestore获取数据的颤振,firebase,flutter,dart,flutter-web,Firebase,Flutter,Dart,Flutter Web,如何使用firebase模块检索数据 这是我的班级: import 'package:firebase/firebase.dart'; import 'package:firebase/firestore.dart'; import 'dart:convert' as json; import 'package:projecthub/models/User.dart'; class DatabaseService { static final Firestore store = fire

如何使用firebase模块检索数据

这是我的班级:

import 'package:firebase/firebase.dart';
import 'package:firebase/firestore.dart';
import 'dart:convert' as json;
import 'package:projecthub/models/User.dart';

class DatabaseService {

  static final Firestore store = firestore();
  CollectionReference users = store.collection('users');
  CollectionReference projects = store.collection('projects');

  DatabaseService();

  void getUsers (){
    print("fetching data...");
    users.onSnapshot.listen((querySnapshot) {
      print(querySnapshot);
    });

  }

  void createNewUser(String uid, String username, int reputaion, List followers){

  }

}
这是index.html:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>projecthub</title>
  <script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-app.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-firestore.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-auth.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-storage.js"></script>
  <script defer src="main.dart.js" type="application/javascript"></script>
</head>

<body>
  <script>
    document.addEventListener('keydown', function (event) {
      if (event.code == 'Tab') {
        event.preventDefault();
      }
    });
    var perf = firebase.performance();
  </script>
</body>

</html>
我正在初始化main.dart中的应用程序

assert((){
    initializeApp(
      apiKey: "API KEY",
      authDomain: "AUTH DOMAIN",
      databaseURL: "DB URL",
      projectId: "Project Id",
      storageBucket: "storage bucket",
      messagingSenderId: "messaging id");
      return true;
  }());
我已尝试按照firebase模块文档进行操作,但没有找到答案。
我正在使用firebase:^7.1.0已尝试cloud\u firestore,但仍找不到答案。

如果您对此主题有任何疑问,请随时询问。请尝试以下代码。它会起作用的

// 1
// FirestoreGet

import 'package:firebase/firebase.dart';
import 'package:firebase/firestore.dart' as fs;

class FirestoreGet {

    static Future<List<Users>> getUsers() async {
      fs.Firestore store = firestore();
      fs.CollectionReference ref = store.collection("users");

      List<Users> usersAry = List();

      ref.onSnapshot.listen((querySnapshot) {
      querySnapshot.docChanges().forEach((change) {
         if (change.type == "added") {
           // Do something with change.doc
          print("Count : ${querySnapshot.size}");
         }
      });

      querySnapshot.docs.forEach((d) {
        usersAry.add(Users.fromJson(d.data(), d.id));
      });
      return usersAry;
    });
  }
}

// 2
// User Model

class Users {
   String first_name;
   String last_name;
   String email_address;

  Users({
    String first_name = '',
    String last_name = '',
    String email_address = '',
  }) {
    this.first_name = first_name;
    this.last_name = last_name;
   this.email_address = email_address;
  }

  Users.fromJson(Map<String, dynamic> jsonMap, String documentId) {
     first_name = jsonMap['first_name'];
     last_name = jsonMap['last_name'];
     email_address = jsonMap['email_address'];
  }

 Map<String, dynamic> toMap() {
   return <String, dynamic>{
     'first_name': this.first_name,
     'last_name': this.last_name,
     'email_address': this.email_address,
  };
 }
}

// 3
// main.dart

import 'package:firebase/firebase.dart' as fb;

void main(){
  assert((){
    fb.initializeApp(
      apiKey: "API KEY",
      authDomain: "AUTH DOMAIN",
      databaseURL: "DB URL",
      projectId: "Project Id",
      storageBucket: "storage bucket",
      messagingSenderId: "messaging id");
      return true;
  }());
   runApp(Home());
}


// 4
// Home Page

class Home extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return HomeState();
  }
}

 class HomeState extends State<Home> {

  @override
  Widget build(BuildContext context) {
    //getting screen size
  }

  @override
  void initState() {
    super.initState();

     var userAry = FirestoreGet.getUsers();
     print(userAry);
  }
}

// 5
// index.html 

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <script defer src="main.dart.js" type="application/javascript"></script>
</head>
<body>

  <script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-app.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-firestore.js"></script>

  <script>
    document.addEventListener('keydown', function (event) {
      // console.log('event key'+event.code);
      if (event.code == 'Tab') {
        event.preventDefault();
      }
    });
    var perf = firebase.performance();

</script>
</body>
</html>

// 6
// pubspec.yaml

 dependencies:
  flutter:
    sdk: flutter
  firebase: ^7.1.0
//1
//FirestoreGet
导入“包:firebase/firebase.dart”;
将“包:firebase/firestore.dart”作为fs导入;
FirestoreGet类{
静态未来getUsers()异步{
fs.Firestore-store=Firestore();
fs.collectionref=store.collection(“用户”);
List usersAry=List();
参考onSnapshot.listen((querySnapshot){
querySnapshot.docChanges().forEach((更改){
如果(change.type==“已添加”){
//用change.doc做点什么
打印(“计数:${querySnapshot.size}”);
}
});
querySnapshot.docs.forEach((d){
添加(Users.fromJson(d.data(),d.id));
});
返回用户权限;
});
}
}
// 2
//用户模型
类用户{
字符串名;
字符串last_name;
字符串电子邮件地址;
使用者({
字符串first_name=“”,
字符串last_name=“”,
字符串电子邮件地址=“”,
}) {
this.first\u name=first\u name;
this.last_name=last_name;
this.email\u address=电子邮件地址;
}
fromJson(映射jsonMap,字符串documentId){
first_name=jsonMap['first_name'];
last_name=jsonMap['last_name'];
email_address=jsonMap['email_address'];
}
映射toMap(){
返回{
“first\u name”:这个.first\u name,
“姓氏”:this.last\u name,
“电子邮件地址”:此.email\u地址,
};
}
}
// 3
//主飞镖
将“包:firebase/firebase.dart”作为fb导入;
void main(){
断言(){
fb.initializeApp(
API密钥:“API密钥”,
authDomain:“AUTH域”,
数据库URL:“数据库URL”,
projectId:“项目Id”,
存储桶:“存储桶”,
messagingSenderId:“消息id”);
返回true;
}());
runApp(Home());
}
// 4
//主页
类Home扩展了StatefulWidget{
@凌驾
状态createState(){
//TODO:实现createState
返回家园();
}
}
类HomeState扩展到State{
@凌驾
小部件构建(构建上下文){
//获取屏幕大小
}
@凌驾
void initState(){
super.initState();
var userAry=FirestoreGet.getUsers();
打印(用户);
}
}
// 5
//index.html
document.addEventListener('keydown',函数(事件){
//console.log('事件键'+事件代码);
如果(event.code=='Tab'){
event.preventDefault();
}
});
var perf=firebase.performance();
// 6
//公开发行
依赖项:
颤振:
sdk:颤振
firebase:^7.1.0

尝试下面的代码。它会起作用的

// 1
// FirestoreGet

import 'package:firebase/firebase.dart';
import 'package:firebase/firestore.dart' as fs;

class FirestoreGet {

    static Future<List<Users>> getUsers() async {
      fs.Firestore store = firestore();
      fs.CollectionReference ref = store.collection("users");

      List<Users> usersAry = List();

      ref.onSnapshot.listen((querySnapshot) {
      querySnapshot.docChanges().forEach((change) {
         if (change.type == "added") {
           // Do something with change.doc
          print("Count : ${querySnapshot.size}");
         }
      });

      querySnapshot.docs.forEach((d) {
        usersAry.add(Users.fromJson(d.data(), d.id));
      });
      return usersAry;
    });
  }
}

// 2
// User Model

class Users {
   String first_name;
   String last_name;
   String email_address;

  Users({
    String first_name = '',
    String last_name = '',
    String email_address = '',
  }) {
    this.first_name = first_name;
    this.last_name = last_name;
   this.email_address = email_address;
  }

  Users.fromJson(Map<String, dynamic> jsonMap, String documentId) {
     first_name = jsonMap['first_name'];
     last_name = jsonMap['last_name'];
     email_address = jsonMap['email_address'];
  }

 Map<String, dynamic> toMap() {
   return <String, dynamic>{
     'first_name': this.first_name,
     'last_name': this.last_name,
     'email_address': this.email_address,
  };
 }
}

// 3
// main.dart

import 'package:firebase/firebase.dart' as fb;

void main(){
  assert((){
    fb.initializeApp(
      apiKey: "API KEY",
      authDomain: "AUTH DOMAIN",
      databaseURL: "DB URL",
      projectId: "Project Id",
      storageBucket: "storage bucket",
      messagingSenderId: "messaging id");
      return true;
  }());
   runApp(Home());
}


// 4
// Home Page

class Home extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return HomeState();
  }
}

 class HomeState extends State<Home> {

  @override
  Widget build(BuildContext context) {
    //getting screen size
  }

  @override
  void initState() {
    super.initState();

     var userAry = FirestoreGet.getUsers();
     print(userAry);
  }
}

// 5
// index.html 

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <script defer src="main.dart.js" type="application/javascript"></script>
</head>
<body>

  <script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-app.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-firestore.js"></script>

  <script>
    document.addEventListener('keydown', function (event) {
      // console.log('event key'+event.code);
      if (event.code == 'Tab') {
        event.preventDefault();
      }
    });
    var perf = firebase.performance();

</script>
</body>
</html>

// 6
// pubspec.yaml

 dependencies:
  flutter:
    sdk: flutter
  firebase: ^7.1.0
//1
//FirestoreGet
导入“包:firebase/firebase.dart”;
将“包:firebase/firestore.dart”作为fs导入;
FirestoreGet类{
静态未来getUsers()异步{
fs.Firestore-store=Firestore();
fs.collectionref=store.collection(“用户”);
List usersAry=List();
参考onSnapshot.listen((querySnapshot){
querySnapshot.docChanges().forEach((更改){
如果(change.type==“已添加”){
//用change.doc做点什么
打印(“计数:${querySnapshot.size}”);
}
});
querySnapshot.docs.forEach((d){
添加(Users.fromJson(d.data(),d.id));
});
返回用户权限;
});
}
}
// 2
//用户模型
类用户{
字符串名;
字符串last_name;
字符串电子邮件地址;
使用者({
字符串first_name=“”,
字符串last_name=“”,
字符串电子邮件地址=“”,
}) {
this.first\u name=first\u name;
this.last_name=last_name;
this.email\u address=电子邮件地址;
}
fromJson(映射jsonMap,字符串documentId){
first_name=jsonMap['first_name'];
last_name=jsonMap['last_name'];
email_address=jsonMap['email_address'];
}
映射toMap(){
返回{
“first\u name”:这个.first\u name,
“姓氏”:this.last\u name,
“电子邮件地址”:此.email\u地址,
};
}
}
// 3
//主飞镖
将“包:firebase/firebase.dart”作为fb导入;
void main(){
断言(){
fb.initializeApp(
API密钥:“API密钥”,
authDomain:“AUTH域”,
数据库URL:“数据库URL”,
projectId:“项目Id”,
存储桶:“存储桶”,
messagingSenderId:“消息id”);
返回true;
}());
runApp(Home());
}
// 4
//主页
类Home扩展了StatefulWidget{
@凌驾
状态createState(){
//TODO:实现createState
返回家园();
}
}
类HomeState扩展到State{
@凌驾
小部件构建(构建上下文){
//获取屏幕大小
}
@凌驾
void initState(){
super.initState();
var userAry=FirestoreGet.getUsers();
打印(用户);
}
}
// 5
//index.html
document.addEventListener('keydown',函数(事件){
//console.log('事件键'+事件代码);
如果(event.code=='Tab'){
event.preventDefault();
}
});
var perf=firebase.performance();
// 6
//公开发行
依赖项:
颤振:
sdk:颤振
firebase:^7.1.0

这应该行得通-它对您不起作用怎么办?您正在呼叫
getUsers
?你调试了你的代码吗?@CreativeCreatorMaybeno它没有打印“获取数据”,但是它没有打印查询快照我不知道为什么你要将库添加为
标签并初始化你的应用程序?@CreativeCreatorMaybeno是的,我没有。这应该行得通-那它对你不起作用呢?您正在呼叫
getUsers
?你调试了你的代码吗?@creativeCreatorMaybeno它不打印“获取数据”,但不打印q