1

我有 3 个嵌套的流构建器,除了第 3 个流构建器外,一切都运行良好,打印时我在控制台上获得了正确的数据,但我没有在文本小部件上获得正确的数据,并且我收到“正在加载”文本,只有其他部分正在执行时间。以下是我的代码,附件是我在手机上获得的结果截图。

我不确定我做错了什么。

在此处输入图像描述

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');
            })),
  );
}
4

2 回答 2

0

用这个:

final selectedItem = list.firstWhere((element) => element.id == _item!.id)
于 2021-09-23T08:51:06.217 回答
0

在花了很多时间之后,我只需将 Streambuilder 更改为 Futurebutider 即可解决此问题。

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

于 2019-12-27T11:04:39.910 回答