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
Flutter 颤振-具有下拉菜单的Streambuilder未按预期工作_Flutter_Dart_Dropdown_Stream Builder - Fatal编程技术网

Flutter 颤振-具有下拉菜单的Streambuilder未按预期工作

Flutter 颤振-具有下拉菜单的Streambuilder未按预期工作,flutter,dart,dropdown,stream-builder,Flutter,Dart,Dropdown,Stream Builder,我有3个嵌套的streambuilder,除了第3个streambuilder外,其他一切都正常工作,我在打印时在控制台上获得正确的数据,但我在文本小部件上没有获得正确的数据,我得到的是“加载”文本,只有其他部分一直在执行。下面是我的代码,附件是我在手机上看到的结果截图 我不确定我做错了什么 import'包:cloud_firestore/cloud_firestore.dart'; 进口“包装:颤振/材料.省道”; 小部件_buildAskOf(){ 返回填充( padding:EdgeI

我有3个嵌套的streambuilder,除了第3个streambuilder外,其他一切都正常工作,我在打印时在控制台上获得正确的数据,但我在文本小部件上没有获得正确的数据,我得到的是“加载”文本,只有其他部分一直在执行。下面是我的代码,附件是我在手机上看到的结果截图

我不确定我做错了什么

import'包:cloud_firestore/cloud_firestore.dart';
进口“包装:颤振/材料.省道”;
小部件_buildAskOf(){
返回填充(
padding:EdgeInsets.all(ScreenUtil().setWidth(20)),
子:容器(
宽度:double.infinity,
装饰:盒子装饰(
颜色:AllColor().whiteColor,
边界半径:边界半径。圆形(7.0),
边框:边框。全部(颜色:颜色。灰色)),
孩子:StreamBuilder(
流:_provider.askCreatorStream,
生成器:(上下文,快照askof){
if(快照askof.hasData){
返回流生成器(
流:_provider.askOfStream,
生成器:(上下文,快照选择任务){
返回DropdownButtonHideUnderline(
孩子:填充(
填充:EdgeInsets.symmetric(
垂直:ScreenUtil().setWidth(10),
),
孩子:下拉按钮(
提示:填充(
填充:仅限边缘设置(
左:ScreenUtil().setWidth(30),
),
子:文本(
“请求”,
样式:TextStyle(
//颜色:颜色,黑色,
fontSize:ScreenUtil().setSp(50),
),
),
),
值:Snapshot selectedask.data,
项目:snapshotAskOf.data.map((snapshotAskId){
返回下拉菜单项(
价值:snapshotAskId,
孩子:StreamBuilder(
流:_provider.getData(
uid:snapshotAskId),
生成器:(上下文,快照用户){
用户模型用户模型;
if(snapshotUser.hasData){
用户模型=
UserModel.fromSnapshot(
snapshotUser.data);
印刷品(
'下拉菜单上的快照用户:${userModel.firstName}${userModel.lastName}';
返回填充(
填充:仅限边缘设置(
左:ScreenUtil().setWidth(30),
),
子:文本(
snapshotUser.hasData?'${userModel.firstName}${userModel.lastName}':'a',
textAlign:textAlign.center,
样式:TextStyle(
颜色:所有颜色()
.primaryTextColor,
字体大小:
ScreenUtil().setSp(45),
),
),
);
}
返回文本(“加载”);
}),
);
}).toList(),
一旦更改:(val){
打印('val askof:$val');
_提供者。askOfSink(val);
},
),
),
);
});
}
返回文本(“无列表”);
})),
);
}

花了很多时间后,我可以通过将Streambuilder更改为Futurebutider来解决这个问题


我不确定Streambuilder为什么不工作。如果您发现这不起作用的原因或任何其他解决方案,请告诉我。

花了很多时间后,我可以通过将Streambuilder更改为Futurebutider来解决此问题

我不确定Streambuilder为什么不工作。请让我知道,如果你发现为什么这是不工作或任何其他解决方案

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';

Widget _buildAskOf() {
  return Padding(
    padding: EdgeInsets.all(ScreenUtil().setWidth(20)),
    child: Container(
        width: double.infinity,
        decoration: BoxDecoration(
            color: AllColors().whiteColor,
            borderRadius: BorderRadius.circular(7.0),
            border: Border.all(color: Colors.grey)),
        child: StreamBuilder<List<String>>(
            stream: _provider.askCreatorStream,
            builder: (context, snapshotAskOf) {
              if (snapshotAskOf.hasData) {
                return StreamBuilder<String>(
                    stream: _provider.askOfStream,
                    builder: (context, snapshotSelectedAsk) {
                      return DropdownButtonHideUnderline(
                        child: Padding(
                          padding: EdgeInsets.symmetric(
                            vertical: ScreenUtil().setWidth(10),
                          ),
                          child: DropdownButton<String>(
                            hint: Padding(
                              padding: EdgeInsets.only(
                                left: ScreenUtil().setWidth(30),
                              ),
                              child: Text(
                                "Ask of",
                                style: TextStyle(
                                  //color: Colors.black,
                                  fontSize: ScreenUtil().setSp(50),
                                ),
                              ),
                            ),
                            value: snapshotSelectedAsk.data,
                            items: snapshotAskOf.data.map((snapshotAskId) {
                              return DropdownMenuItem<String>(
                                value: snapshotAskId,
                                child: StreamBuilder<DocumentSnapshot>(
                                    stream: _provider.getData(
                                        uid: snapshotAskId),
                                    builder: (context, snapshotUser) {
                                      UserModel userModel;
                                      if (snapshotUser.hasData) {
                                        userModel =
                                            UserModel.fromSnapshot(
                                                snapshotUser.data);
                                        print(
                                            'snapshotUser on dropdown: ${userModel.firstName} ${userModel.lastName}');

                                        return Padding(
                                          padding: EdgeInsets.only(
                                            left: ScreenUtil().setWidth(30),
                                          ),
                                          child: Text(
                                            snapshotUser.hasData?'${userModel.firstName} ${userModel.lastName}':'a',
                                            textAlign: TextAlign.center,
                                            style: TextStyle(
                                              color: AllColors()
                                                  .primaryTextColor,
                                              fontSize:
                                              ScreenUtil().setSp(45),
                                            ),
                                          ),
                                        );
                                      }
                                      return Text('Loading');
                                    }),
                              );
                            }).toList(),
                            onChanged: (val) {
                              print('val askof: $val');
                              _provider.askOfSink(val);
                            },
                          ),
                        ),
                      );
                    });
              }
              return Text('No List');
            })),
  );
}