首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串能否与firebase实时数据库中的键值进行比较?

字符串能否与firebase实时数据库中的键值进行比较?
EN

Stack Overflow用户
提问于 2022-06-25 14:23:50
回答 1查看 31关注 0票数 1

我是新的颤振和火力基地,并试图显示当前用户的数据,已登录。我自己尝试过各种方法,比如将当前用户的电子邮件存储在字符串变量上,并将其与他们的电子邮件键进行比较,但无法找到如何做到这一点。

是否有一种方法可以将快照作为仅登录用户数据的输出?

代码语言:javascript
复制
    import 'package:firebase_database/firebase_database.dart';
import 'package:firebase_database/ui/firebase_animated_list.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:helloworld/tictactoe.dart';
import 'package:helloworld/numbergame.dart';
import 'package:helloworld/profile.dart';

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      // Remove the debug banner
      debugShowCheckedModeBanner: false,
      title: 'Search',
      home: Search(),
    );
  }
}

class Search extends StatefulWidget {
  const Search({Key? key}) : super(key: key);
  static const String id = 'search';
  @override
  _SearchState createState() => _SearchState();
}

class _SearchState extends State<Search> with AutomaticKeepAliveClientMixin {
  final dbRef = FirebaseDatabase.instance.ref().child("insertdata");
  List<Map<dynamic, dynamic>> lists = [];

  final _auth = FirebaseAuth.instance;
  late String? userEmail;
  void getCurrentUserEmail() async {
    final user = await _auth.currentUser;
    userEmail = user!.email;
  }
  void initState() {
    super.initState();
    getCurrentUserEmail();
  }
  @override
  Widget build(BuildContext context) {
    super.build(context);
    //btmnavbar

    return Scaffold(
      resizeToAvoidBottomInset: false,
      body: FutureBuilder<DatabaseEvent>(
          future: dbRef.once(),
          builder: (context, AsyncSnapshot<DatabaseEvent> snapshot) {
            if (snapshot.hasData) {
              lists.clear();
              Map<dynamic, dynamic> values = snapshot.data!.snapshot.value as Map<dynamic, dynamic>;
              values.forEach((key, values) {
                lists.add(values);
              });
              return new ListView.builder(
                  shrinkWrap: true,
                  itemCount: lists.length,
                  itemBuilder: (BuildContext context, int index) {
                    return Card(
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: <Widget>[
                          Text("Name: " + lists[index]["Email"]),
                          Text("Age: " + lists[index]["First Name"]),
                          Text("Type: " + lists[index]["Last Name"]),
                        ],
                      ),
                    );
                  });
            }
            return CircularProgressIndicator();
          }),
    );
  }

  @override
  // TODO: implement wantKeepAlive
  bool get wantKeepAlive => true;
}
EN

回答 1

Stack Overflow用户

发布于 2022-06-25 14:33:31

如果您有用户的电子邮件地址,您可以使用一个查询来选择在其Email属性中具有该值的节点:

代码语言:javascript
复制
future: dbRef.orderByChild("Email").equalTo("hiba@gmail.com").once(),

或者,如果您有一个带有电子邮件地址的变量userEmail

代码语言:javascript
复制
future: dbRef.orderByChild("Email").equalTo(userEmail).once(),

还请参阅实时数据库中有关排序和过滤数据的Firebase文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72754659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档