【发布时间】:2019-05-14 19:19:47
【问题描述】:
我想在构建小部件之前从两个流中获取数据。第一个流为数据库路径提供 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();
},
),
);
}
}
【问题讨论】:
-
是的,我有.. 两个流都是不同的类型,我将首先加载 uid 以从 firestore 获取用户数据
-
在构建小部件之前,我需要获取 uid。
-
我正在采取另一种方法。我将流划分到需要它们的小部件。如果数据为空,则小部件可见性将为空
标签: flutter