Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
Flutter 颤振:显示firestore中的所有用户_Flutter_Dart_Google Cloud Firestore - Fatal编程技术网

Flutter 颤振:显示firestore中的所有用户

Flutter 颤振:显示firestore中的所有用户,flutter,dart,google-cloud-firestore,Flutter,Dart,Google Cloud Firestore,我想以列表的形式显示firestore数据库的所有用户(尝试开发聊天界面功能), 颤振中是否有可以调用的包来创建聊天界面 下面是我迄今为止所做的尝试: chat_interface.dart import 'package:cached_network_image/cached_network_image.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flutter/material.d

我想以列表的形式显示firestore数据库的所有用户(尝试开发聊天界面功能), 颤振中是否有可以调用的包来创建聊天界面

下面是我迄今为止所做的尝试:

chat_interface.dart

import 'package:cached_network_image/cached_network_image.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:fluttershare/models/user.dart';
import 'package:fluttershare/widgets/header.dart';
import 'package:fluttershare/widgets/progress.dart';
import 'home.dart';

class Chats extends StatefulWidget {
  final String chatUserId;
  Chats({this.chatUserId});
  @override
  _ChatState createState() => _ChatState(
    chatUserId:this.chatUserId,
  );
}

class _ChatState extends State<Chats> {

  TextEditingController chatController = TextEditingController();

  Future<QuerySnapshot> chatUsers = usersRef.getDocuments();

  final String chatUserId;
  _ChatState({this.chatUserId});
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    userDisplay();
  }
  @override
  Widget build(BuildContext context) {
  }
  userDisplay(){
    return FutureBuilder(
      future: chatUsers,
      builder: (context,snapshot){
        if(!snapshot.hasData){
          return circularProgress();
        }
        List<ChatResult> results = [];
        snapshot.data.documents.forEach((doc){
        User user = User.fromDocument(doc);
        ChatResult result = ChatResult(user);
        results.add(result);
        });
        return ListView(
            children: results,
        );
      }
    );
  }
}

class ChatResult extends StatelessWidget {
  final User user;
  ChatResult(this.user);
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: header(context, titleText: 'GupShup'),
      body: Container(
      color:Colors.white,
      child: Column(
        children: <Widget>[
            ListTile(
              leading: CircleAvatar(
                backgroundColor: Colors.grey,
                backgroundImage: CachedNetworkImageProvider(user.photoUrl),
              ),
              title: Text(user.displayName,style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold),),
              subtitle: Text('Message'),
              ),
          Divider(
            height: 2.0,
            color: Colors.white54,
          ),
        ],
      ),
    ),
    );
  }
}
import'package:cached_network_image/cached_network_image.dart';
导入“包:cloud_firestore/cloud_firestore.dart”;
进口“包装:颤振/材料.省道”;
导入“包:flattershare/models/user.dart”;
导入“package:share/widgets/header.dart”;
导入“package:share/widgets/progress.dart”;
输入“home.dart”;
类聊天扩展StatefulWidget{
最终字符串chatUserId;
聊天({this.chatUserId});
@凌驾
_ChatState createState()=>\u ChatState(
chatUserId:this.chatUserId,
);
}
类_ChatState扩展状态{
TextEditingController chatController=TextEditingController();
Future chatUsers=usersRef.getDocuments();
最终字符串chatUserId;
_ChatState({this.chatUserId});
@凌驾
void initState(){
//TODO:实现initState
super.initState();
userDisplay();
}
@凌驾
小部件构建(构建上下文){
}
userDisplay(){
回归未来建设者(
未来:聊天室用户,
生成器:(上下文,快照){
如果(!snapshot.hasData){
返回循环进程();
}
列出结果=[];
snapshot.data.documents.forEach((doc){
用户=User.fromDocument(doc);
ChatResult=ChatResult(用户);
结果。添加(结果);
});
返回列表视图(
儿童:结果,
);
}
);
}
}
类ChatResult扩展了无状态小部件{
最终用户;
ChatResult(this.user);
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:header(上下文,titleText:'GupShup'),
主体:容器(
颜色:颜色,白色,
子:列(
儿童:[
列表砖(
领先:CircleAvatar(
背景颜色:颜色。灰色,
backgroundImage:CachedNetworkImageProvider(user.photoUrl),
),
标题:文本(user.displayName,style:TextStyle(颜色:Colors.white,fontwweight:fontwweight.bold)),
字幕:文本(“消息”),
),
分隔器(
身高:2.0,
颜色:颜色。白色54,
),
],
),
),
);
}
}
我得到了这个错误

══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following assertion was thrown building Chats(dirty, dependencies: [_InheritedTheme,
_LocalizationsScope-[GlobalKey#4c382]], state: _ChatState#e9c68):
A build function returned null.
The offending widget is:
  Chats
Build functions must never return null.
To return an empty space that causes the building widget to fill available room, return
"Container()". To return an empty space that takes as little room as possible, return
"Container(width: 0.0, height: 0.0)".
The relevant error-causing widget was:
  Chats
[38;5;248m  [39;49m
 lib\widgets\header.dart
When the exception was thrown, this was the stack:
[38;5;244m#0      debugWidgetBuilderValue.<anonymous closure>[39;49m 
 package:flutter/…/widgets/debug.dart
[38;5;244m#1      debugWidgetBuilderValue[39;49m 
 package:flutter/…/widgets/debug.dart
[38;5;244m#2      ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#3      StatefulElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#4      Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#5      StatefulElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#6      Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#7      SingleChildRenderObjectElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#8      Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#9      ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#10     Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#11     StatelessElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#12     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#13     SingleChildRenderObjectElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#14     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#15     SingleChildRenderObjectElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#16     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#17     ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#18     StatefulElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#19     Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#20     StatefulElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#21     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#22     SingleChildRenderObjectElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#23     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#24     SingleChildRenderObjectElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#25     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#26     ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#27     StatefulElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#28     Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#29     StatefulElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#30     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#31     ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#32     Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#33     StatelessElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#34     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#35     ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#36     StatefulElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#37     Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#38     StatefulElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#39     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#40     SingleChildRenderObjectElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#41     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#42     ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#43     Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#44     ProxyElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#45     _InheritedNotifierElement.update[39;49m 
 package:flutter/…/widgets/inherited_notifier.dart
[38;5;244m#46     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#47     SingleChildRenderObjectElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#48     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#49     ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#50     StatefulElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#51     Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#52     StatefulElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#53     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#54     ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#55     Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#56     ProxyElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#57     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#58     ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#59     StatefulElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#60     Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#61     StatefulElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#62     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#63     ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#64     Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#65     StatelessElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#66     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#67     SingleChildRenderObjectElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#68     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#69     ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#70     Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#71     ProxyElement.update[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#72     Element.updateChild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#73     ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#74     StatefulElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#75     Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#76     BuildOwner.buildScope[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#77     WidgetsBinding.drawFrame[39;49m 
 package:flutter/…/widgets/binding.dart
[38;5;244m#78     RendererBinding._handlePersistentFrameCallback[39;49m 
 package:flutter/…/rendering/binding.dart
[38;5;244m#79     SchedulerBinding._invokeFrameCallback[39;49m 
 package:flutter/…/scheduler/binding.dart
[38;5;244m#80     SchedulerBinding.handleDrawFrame[39;49m 
 package:flutter/…/scheduler/binding.dart
[38;5;244m#81     SchedulerBinding.scheduleWarmUpFrame.<anonymous closure>[39;49m 
 package:flutter/…/scheduler/binding.dart
(elided 4 frames from class _RawReceivePortImpl, class _Timer, and dart:async-patch)
════════════════════════════════════════════════════════════════════════════════════════════════════

[38;5;248m════════ Exception caught by widgets library ═══════════════════════════════════[39;49m
[38;5;244mThe following assertion was thrown building Chats(dirty, dependencies: [_InheritedTheme, _LocalizationsScope-[GlobalKey#4c382]], state: _ChatState#e9c68):[39;49m
A build function returned null.

[38;5;244mThe offending widget is: Chats[39;49m
[38;5;244mBuild functions must never return null.[39;49m

[38;5;248mTo return an empty space that causes the building widget to fill available room, return "Container()". To return an empty space that takes as little room as possible, return "Container(width: 0.0, height: 0.0)".[39;49m

[38;5;244mThe relevant error-causing widget was[39;49m
    [38;5;248mChats[39;49m 
 lib\widgets\header.dart
[38;5;244mWhen the exception was thrown, this was the stack[39;49m
[38;5;244m#0      debugWidgetBuilderValue.<anonymous closure>[39;49m 
 package:flutter/…/widgets/debug.dart
[38;5;244m#1      debugWidgetBuilderValue[39;49m 
 package:flutter/…/widgets/debug.dart
[38;5;244m#2      ComponentElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#3      StatefulElement.performRebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m#4      Element.rebuild[39;49m 
 package:flutter/…/widgets/framework.dart
[38;5;244m...[39;49m
[38;5;248m════════════════════════════════════════════════════════════════════════════════[39;49m
Reloaded 0 of 1172 libraries in 197ms.
══╡ WIDGETS库捕获到异常╞═══════════════════════════════════════════════════════════
生成聊天时抛出了以下断言(脏,依赖项:[\u继承了它们,
_本地化范围-[GlobalKey#4c382]],状态:#ChatState#e9c68):
生成函数返回null。
有问题的小部件是:
聊天
构建函数不能返回null。
要返回导致building小部件填满可用空间的空白空间,请返回
“容器()。要返回占用尽可能少空间的空白空间,请返回
“容器(宽度:0.0,高度:0.0)”。
导致错误的相关小部件是:
聊天
[38;5;248米[39;49米
lib\widgets\header.dart
引发异常时,这是堆栈:
[38;5;244m#0调试WidgetBuilderValue


现在有人能帮我吗?

尝试从构建方法返回小部件

  @override
  Widget build(BuildContext context) {
     return FutureBuilder(...);
  }

我把代码改了一点,你能看一下吗?
  @override
  Widget build(BuildContext context) {
     return FutureBuilder(...);
  }