Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 返回文档快照<;地图<;字符串,动态>&燃气轮机&燃气轮机;从溪流中飘动_Firebase_Flutter_Google Cloud Firestore_Stream_Provider - Fatal编程技术网

Firebase 返回文档快照<;地图<;字符串,动态>&燃气轮机&燃气轮机;从溪流中飘动

Firebase 返回文档快照<;地图<;字符串,动态>&燃气轮机&燃气轮机;从溪流中飘动,firebase,flutter,google-cloud-firestore,stream,provider,Firebase,Flutter,Google Cloud Firestore,Stream,Provider,如果有人能帮我发现我的颤振应用程序中的错误,我将不胜感激 我认为这是数据库流返回的数据类型的问题 在我的应用程序中,我必须从Firestore的“用户”集合中检索用户信息,以显示在用户配置文件屏幕中,但我遇到以下错误: ======== Exception caught by widgets library ======================================================= The following StateError was thrown bui

如果有人能帮我发现我的颤振应用程序中的错误,我将不胜感激

我认为这是数据库流返回的数据类型的问题

在我的应用程序中,我必须从Firestore的“用户”集合中检索用户信息,以显示在用户配置文件屏幕中,但我遇到以下错误:

======== Exception caught by widgets library =======================================================
The following StateError was thrown building UserProfile(dirty, dependencies: [MediaQuery]):
Bad state: cannot get a field on a DocumentSnapshotPlatform that does not exist

The relevant error-causing widget was: 
  UserProfile file:///Users/JamesMontes/Documents/Flutter-projects/theloudculture/lib/pages/settings/settings_page.dart:30:28
When the exception was thrown, this was the stack: 
#0      DocumentSnapshotPlatform.get (package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_document_snapshot.dart:76:7)
#1      _JsonDocumentSnapshot.get (package:cloud_firestore/src/document_snapshot.dart:92:48)
#2      _JsonDocumentSnapshot.[] (package:cloud_firestore/src/document_snapshot.dart:96:40)
#3      UserProfile.build (package:theloudculture/pages/account/user_profile.dart:31:42)
#4      StatelessElement.build (package:flutter/src/widgets/framework.dart:4569:28)
...
====================================================================================================

======== Exception caught by widgets library =======================================================
Bad state: cannot get a field on a DocumentSnapshotPlatform that does not exist
The relevant error-causing widget was: 
  UserProfile file:///Users/JamesMontes/Documents/Flutter-projects/theloudculture/lib/pages/settings/settings_page.dart:30:28
====================================================================================================

======== Exception caught by widgets library =======================================================
Bad state: cannot get a field on a DocumentSnapshotPlatform that does not exist
The relevant error-causing widget was: 
  UserProfile file:///Users/JamesMontes/Documents/Flutter-projects/theloudculture/lib/pages/settings/settings_page.dart:30:28
====================================================================================================
我的文件包含以下代码:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:theloudculture/models/user_model.dart';
import 'package:theloudculture/pages/inner_pages.dart';
import 'package:theloudculture/services/database.dart';
import 'package:theloudculture/widgets/widgets.dart';

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final user = Provider.of<CustomUser>(context);

    return StreamProvider<DocumentSnapshot<Map<String, dynamic>>>.value(
      value: DatabaseService(uid: user != null ? user.uid : null).user,
      child: ChangeNotifierProvider(
        create: (_) => NavegacionModel(),
        child: Container(
          color: Colors.black,
          child: Scaffold(
            backgroundColor: Colors.black,
            appBar: LoudAppBar(),
            body: Paginas(),
            bottomNavigationBar: BottomNavBar(),
          ),
        ),
      ),
    );
  }
}

class NavegacionModel with ChangeNotifier {
  int _paginaActual = 0;
  int get paginaActual => this._paginaActual;

  set paginaActual(int valor) {
    this._paginaActual = valor;

    //Notifying widgets
    notifyListeners();
  }
}
database.dart(在其中检索用户数据)

类数据库服务{
最后一个字符串uid;
数据库服务({this.uid});
//获取用户流
流获取用户{
返回userscolection.doc(uid.snapshots();
}
}
提供流的小部件是my Home小部件,具有以下代码:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:theloudculture/models/user_model.dart';
import 'package:theloudculture/pages/inner_pages.dart';
import 'package:theloudculture/services/database.dart';
import 'package:theloudculture/widgets/widgets.dart';

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final user = Provider.of<CustomUser>(context);

    return StreamProvider<DocumentSnapshot<Map<String, dynamic>>>.value(
      value: DatabaseService(uid: user != null ? user.uid : null).user,
      child: ChangeNotifierProvider(
        create: (_) => NavegacionModel(),
        child: Container(
          color: Colors.black,
          child: Scaffold(
            backgroundColor: Colors.black,
            appBar: LoudAppBar(),
            body: Paginas(),
            bottomNavigationBar: BottomNavBar(),
          ),
        ),
      ),
    );
  }
}

class NavegacionModel with ChangeNotifier {
  int _paginaActual = 0;
  int get paginaActual => this._paginaActual;

  set paginaActual(int valor) {
    this._paginaActual = valor;

    //Notifying widgets
    notifyListeners();
  }
}
import'包:cloud_firestore/cloud_firestore.dart';
进口“包装:颤振/材料.省道”;
导入“包:provider/provider.dart”;
导入“包:loudculture/models/user_model.dart”;
导入“package:theloudculture/pages/inner_pages.dart”;
导入“包:loudculture/services/database.dart”;
导入“包:loudculture/widgets/widgets.dart”;
类Home扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
最终用户=提供者(上下文);
返回StreamProvider.value(
值:DatabaseService(uid:user!=null?user.uid:null)。用户,
子项:ChangeNotifierProvider(
创建:()=>NavegacionModel(),
子:容器(
颜色:颜色,黑色,
孩子:脚手架(
背景颜色:Colors.black,
appBar:LoudAppBar(),
正文:Paginas(),
bottomNavigationBar:BottomNavBar(),
),
),
),
);
}
}
使用ChangeNotifier类NavegacionModel{
int _paginaActual=0;
int get paginaActual=>这个;
设置实际值(int-valor){
这个。_paginaActual=勇气;
//通知小部件
notifyListeners();
}
}
设置页面是home小部件的子项,因此我从该小部件访问用户数据

import 'package:animate_do/animate_do.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:theloudculture/pages/account/user_profile.dart';
import 'package:theloudculture/services/auth.dart';
import 'package:theloudculture/shared/loading.dart';
import 'package:theloudculture/widgets/widgets.dart';

class SettingsPage extends StatelessWidget {
  final AuthService _auth = AuthService();

  @override
  Widget build(BuildContext context) {
    final userData =
        Provider.of<DocumentSnapshot<Map<String, dynamic>>>(context);

    print(userData);

    return userData == null
        ? Loading()
        : FadeIn(
            duration: Duration(milliseconds: 500),
            child: Container(
              padding: EdgeInsets.symmetric(horizontal: 10.0),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: <Widget>[
                  Expanded(
                    child: UserProfile(userData: userData),
                  ),
                  LargeBtn(
                    btnText: 'Salir',
                    bottomMargin: true,
                    btnAction: () async {
                      await _auth.signOut();
                    },
                  ),
                ],
              ),
            ),
          );
  }
}
import'package:animate_do/animate_do.dart';
导入“包:cloud_firestore/cloud_firestore.dart”;
进口“包装:颤振/材料.省道”;
导入“包:provider/provider.dart”;
导入“包:loudculture/pages/account/user_profile.dart”;
导入“包:loudculture/services/auth.dart”;
导入“package:theloudculture/shared/loading.dart”;
导入“包:loudculture/widgets/widgets.dart”;
类设置SPAGE扩展了无状态小部件{
最终AuthService_auth=AuthService();
@凌驾
小部件构建(构建上下文){
最终用户数据=
(上下文)的提供者;
打印(用户数据);
返回userData==null
?加载()
:法登(
持续时间:持续时间(毫秒:500),
子:容器(
填充:边缘组。对称(水平:10.0),
子:列(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
扩大(
子:UserProfile(userData:userData),
),
大的(
btnText:“Salir”,
是的,
b操作:()异步{
等待_auth.signOut();
},
),
],
),
),
);
}
}
此外,该错误还提到UserProfile小部件,代码如下:

import 'package:flutter/material.dart';
import 'package:theloudculture/pages/account/user_edit_page.dart';
import 'package:theloudculture/pages/account/user_profile_header.dart';
import 'package:theloudculture/shared/loading.dart';
import 'package:theloudculture/widgets/outlined_custom_button.dart';

class UserProfile extends StatelessWidget {
  final userData;

  const UserProfile({
    Key key,
    this.userData,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    final screenSize = MediaQuery.of(context).size;

    return userData == null
        ? Loading()
        : Container(
            width: screenSize.width * 0.95,
            height: screenSize.height * 0.7,
            padding: EdgeInsets.only(top: 15.0),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                userData == null
                    ? Loading()
                    : UserProfileHeader(
                        userUid: userData['userUid'],
                        userReferrerCode: userData['userReferrerCode'],
                        firstName: userData['firstName'],
                        lastName: userData['lastName'],
                        displayName: userData['displayName'],
                        email: userData['email'],
                        actualProfileImageName: userData['profileImageName'],
                        profileImageUrl: userData['profileImageUrl'],
                      ),
                Container(
                  padding: EdgeInsets.only(top: 15.0),
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      Row(
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: <Widget>[
                          Text('Amigos Invitados:'),
                          SizedBox(width: 10.0),
                          Text(userData['invitedFriends'].toString()),
                        ],
                      ),
                      SizedBox(height: 20.0),
                      OutlinedCustomButton(
                        btnText: 'Editar Perfil',
                        btnAction: () {
                          Navigator.push(
                            context,
                            MaterialPageRoute(
                              builder: (context) => UserEditPage(),
                            ),
                          );
                        },
                      ),
                    ],
                  ),
                ),
                Expanded(
                  child: Container(
                    padding:
                        EdgeInsets.symmetric(vertical: 10.0, horizontal: 10.0),
                    child: Center(
                      child: Text(
                        'Aquí van las opciones',
                        style: TextStyle(color: Colors.white),
                      ),
                    ),
                  ),
                )
              ],
            ),
          );
  }
}
导入“包装:颤振/材料.省道”;
导入“package:theloudculture/pages/account/user\u edit\u page.dart”;
导入“package:loudculture/pages/account/user_profile_header.dart”;
导入“package:theloudculture/shared/loading.dart”;
导入“package:loudculture/widgets/outlined_custom_button.dart”;
类UserProfile扩展了无状态小部件{
最终用户数据;
常量用户配置文件({
关键点,
这个.userData,
}):super(key:key);
@凌驾
小部件构建(构建上下文){
最终屏幕大小=MediaQuery.of(context).size;
返回userData==null
?加载()
:容器(
宽度:screenSize.width*0.95,
高度:屏幕大小。高度*0.7,
填充:仅限边缘设置(顶部:15.0),
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
userData==null
?加载()
:UserProfileHeader(
userUid:userData['userUid'],
userReferrerCode:userData['userReferrerCode'],
firstName:userData['firstName'],
lastName:userData['lastName'],
displayName:userData['displayName'],
电子邮件:userData['email'],
actualProfileImageName:userData['profileImageName'],
profileImageUrl:userData['profileImageUrl'],
),
容器(
填充:仅限边缘设置(顶部:15.0),
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
文本('Amigos Invitados:'),
尺寸箱(宽度:10.0),
文本(userData['invitedFriends'].toString()),
],
),
尺寸箱(高度:20.0),
大纲自定义按钮(
btnText:'Editar Perfil',
b国籍:(){
导航器。推(
上下文
材料路线(
生成器:(上下文)=>UserEditPage(),
    Stream<DocumentSnapshot<Map<String, dynamic>>> get user {
       return usersCollection.doc(uid).snapshots();
    }
    Stream<DocumentSnapshot<Map<String, dynamic>>> get user {
       return FirebaseFirestore.instance.collection('users').where('uid', isEqualTo: uid).snapshots();
    }