Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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 颤振流生成器-流将为null_Flutter - Fatal编程技术网

Flutter 颤振流生成器-流将为null

Flutter 颤振流生成器-流将为null,flutter,Flutter,我希望在构建小部件之前从两个流中获取数据。第一个流为数据库路径提供uid。我不能压缩这两个流,因为我需要先获取uid来构建第二个数据 我尝试使用嵌套流,但不断出现错误 对null调用了方法“[]”。 收件人:空 已尝试呼叫: 我的代码已经给出了。我怎样才能解决这个问题 class _DiabeticaState extends State<Diabetica> { @override Widget build(BuildContext context) { retur

我希望在构建小部件之前从两个流中获取数据。第一个流为数据库路径提供uid。我不能压缩这两个流,因为我需要先获取uid来构建第二个数据

我尝试使用嵌套流,但不断出现错误

对null调用了方法“[]”。 收件人:空 已尝试呼叫:

我的代码已经给出了。我怎样才能解决这个问题

class _DiabeticaState extends State<Diabetica> {

 @override
 Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(
        elevation: 0,
        title: Text(
          "Diabetica",
          style: TextStyle(
              color: Colors.black, fontWeight: FontWeight.w400, fontSize: 22),
        ),
        centerTitle: true,
        actions: <Widget>[
          IconButton(
            icon: Icon(Icons.monetization_on),
            onPressed: () {},
          ),
        ],
      ),
      body: StreamBuilder(
        stream: FirebaseAuth.instance.onAuthStateChanged,
        builder: (BuildContext context, user) {
          if (user.hasData) {
            String name = "";
            String photoUri = "";
            String u = "";
            if (user.connectionState == ConnectionState.active) {
              name = user.data.displayName;
              photoUri = user.data.photoUrl;
              u = user.data.uid;

              return StreamBuilder(
                stream: Firestore.instance.document('users/$u').snapshots(),
                builder: (BuildContext context, db) {
                  if (db.hasData) {
                    double age = 0;
                    double height = 0;
                    double weight = 0;
                    double a1c = 0;
                    double bmr = 0;
                    if (db.connectionState == ConnectionState.active) {
                        age = db.data['age'];
                        height = db.data['height'];
                        weight = db.data['weight'];
                        a1c = db.data['a1c'];
                        bmr = db.data['bmr'];

                      return Container();
                    }
                    return Container(

                    );
                  }
                  return new LoadingScreen();
                },
              );
            }
            return new LoadingScreen();
          }
          return new LoginAlter();
        },
      ),
    );
   }

 }
class\u糖尿病状态扩展{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
海拔:0,
标题:正文(
“糖尿病”,
样式:TextStyle(
颜色:Colors.black,fontWeight:fontWeight.w400,fontSize:22),
),
标题:对,
行动:[
图标按钮(
图标:图标(图标。货币化),
按下:(){},
),
],
),
正文:StreamBuilder(
流:FirebaseAuth.instance.onAuthStateChanged,
生成器:(BuildContext上下文,用户){
if(user.hasData){
字符串名称=”;
字符串photoUri=“”;
字符串u=“”;
if(user.connectionState==connectionState.active){
name=user.data.displayName;
photoUri=user.data.photoUrl;
u=user.data.uid;
返回流生成器(
流:Firestore.instance.document('users/$u')。快照(),
生成器:(BuildContext上下文,db){
if(db.hasData){
双倍年龄=0;
双倍高度=0;
双倍重量=0;
双a1c=0;
双bmr=0;
if(db.connectionState==connectionState.active){
年龄=分贝数据[‘年龄’];
高度=分贝数据[‘高度’];
重量=分贝数据[‘重量’];
a1c=分贝数据['a1c'];
bmr=db.data['bmr'];
返回容器();
}
返回容器(
);
}
返回新的加载屏幕();
},
);
}
返回新的加载屏幕();
}
返回新的LoginAlter();
},
),
);
}
}

在您的案例中,使用此
组合相关流。由于您的实现,组合2
不是正确的方法。您是否尝试在第二个StreamBuilder上设置
initialData
属性


举个例子:

是的,我有。。这两个流都是不同的类型,我将首先加载uid,以便从FireStore获取用户数据。我需要在Flatter构建小部件之前获取uid。我正在采取另一种方法。我正在将流划分为需要的小部件。如果数据为空,则小部件可见性将为空