Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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 StreamBuilder快照连接状态。未工作_Flutter_Google Cloud Firestore - Fatal编程技术网

Flutter StreamBuilder快照连接状态。未工作

Flutter StreamBuilder快照连接状态。未工作,flutter,google-cloud-firestore,Flutter,Google Cloud Firestore,嗨,我使用云Firestore存储数据。在这种情况下,基本聊天应用程序。我想要的是控制Listview.Builder的滚动。我无法控制滚动,因为它在内容构建之前当然不工作。所以我尝试的是等待快照连接完成 snapshot.connectionState==connectionState.done 但程序无法运行连接状态。完成 bool _isMe; ScrollController _ListViewController = ScrollController(); TextEditi

嗨,我使用云Firestore存储数据。在这种情况下,基本聊天应用程序。我想要的是控制Listview.Builder的滚动。我无法控制滚动,因为它在内容构建之前当然不工作。所以我尝试的是等待快照连接完成

snapshot.connectionState==connectionState.done

但程序无法运行连接状态。完成

 bool _isMe;
  ScrollController _ListViewController = ScrollController();
  TextEditingController _controller = TextEditingController();
  @override
  Widget build(BuildContext context) {
    return SafeArea(
        child: Column(
      mainAxisSize: MainAxisSize.max,
      mainAxisAlignment: MainAxisAlignment.end,
      children: [
        StreamBuilder<QuerySnapshot>(
          stream: messages.snapshots(),
          builder: (context, snapshot) {
            if (snapshot.hasError) {
              return Text("hata", style: TextStyle(color: Colors.black));
            }
            if (snapshot.connectionState == ConnectionState.done) { /////////not working
              print(33);
              print(_ListViewController.hasClients);
            }

            if (snapshot.connectionState == ConnectionState.waiting) {
             print(44);
              return Text(
                "bekleniyor",
                style: TextStyle(color: Colors.black),
              );
            }
            return Expanded(
              child: ListView.builder(
                  controller: _ListViewController,
                  shrinkWrap: true,
                  itemCount: snapshot.data.docs.length,
                  itemBuilder: (context, index) {
                    if (snapshot.data.docs[index].data()['user_id'] ==
                        sharedPrefs.UyeId.toString()) {
                      _isMe = true;
                    } else {
                      _isMe = false;
                    }

                    return Container(...)
            );
          },
        ),
      ],
    ));
  }
bool\isMe;
ScrollController_ListViewController=ScrollController();
TextEditingController _controller=TextEditingController();
@凌驾
小部件构建(构建上下文){
返回安全区(
子:列(
mainAxisSize:mainAxisSize.max,
mainAxisAlignment:mainAxisAlignment.end,
儿童:[
StreamBuilder(
流:messages.snapshots(),
生成器:(上下文,快照){
if(snapshot.hasError){
返回文本(“hata”,样式:TextStyle(颜色:Colors.black));
}
如果(snapshot.connectionState==connectionState.done){//不工作
印刷品(33);
打印(_ListViewController.hasClients);
}
if(snapshot.connectionState==connectionState.waiting){
印刷品(44);
返回文本(
“bekleniyor”,
样式:TextStyle(颜色:Colors.black),
);
}
扩大回报(
子项:ListView.builder(
控制器:_ListViewController,
收缩膜:对,
itemCount:snapshot.data.docs.length,
itemBuilder:(上下文,索引){
if(snapshot.data.docs[index].data()['user\u id']==
sharedPrefs.UyeId.toString()){
_isMe=真;
}否则{
_isMe=假;
}
返回容器(…)
);
},
),
],
));
}

程序运行得很好。它可以实时获取数据并发送数据。我只需要新快照的信息。

如果您拥有所有必需的
Firebase
权限,您可以尝试使用
ConnectionState.active

StreamBuilder<QuerySnapshot>(
  stream: messages.snapshots(),
  builder: (context, snapshot) {
    if (snapshot.hasError) print('error');
    if (snapshot.connectionState == ConnectionState.active)  print('active');
    if (snapshot.connectionState == ConnectionState.waiting) print('waiting');
    return Container();
  },
);
StreamBuilder(
流:messages.snapshots(),
生成器:(上下文,快照){
如果(snapshot.hasError)打印('error');
如果(snapshot.connectionState==connectionState.active)打印('active');
如果(snapshot.connectionState==connectionState.waiting)打印('waiting');
返回容器();
},
);

如果您拥有所有必需的
Firebase
权限,您可以尝试使用
ConnectionState.active

StreamBuilder<QuerySnapshot>(
  stream: messages.snapshots(),
  builder: (context, snapshot) {
    if (snapshot.hasError) print('error');
    if (snapshot.connectionState == ConnectionState.active)  print('active');
    if (snapshot.connectionState == ConnectionState.waiting) print('waiting');
    return Container();
  },
);
StreamBuilder(
流:messages.snapshots(),
生成器:(上下文,快照){
如果(snapshot.hasError)打印('error');
如果(snapshot.connectionState==connectionState.active)打印('active');
如果(snapshot.connectionState==connectionState.waiting)打印('waiting');
返回容器();
},
);

我真的不确定这是否适用于我。因为每当我打开键盘StreamBuilder时,都会自动刷新并运行.active和.waiting命令。我认为它不应该这样工作,但我不能确定。我试图找出新数据何时出现,我真的不确定这是否适用于我。因为每当我打开键盘StreamBuilder时,我都会刷新t自我和运行.active和.waiting命令。我认为它不应该像这样工作,但我不能确定。我试图找出新数据何时出现