[英]Conver a stateLessWidget to function
我是一名新的 flutter 开发人员。 我有一个代码可以从 firebase 读取数据一次
这段代码:
class GetUserName extends StatelessWidget {
final String documentId;
GetUserName(this.documentId);
@override
Widget build(BuildContext context) {
CollectionReference users = FirebaseFirestore.instance.collection('users');
return FutureBuilder<DocumentSnapshot>(
future: users.doc(documentId).get(),
builder:
(BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.hasError) {
return Text("Something went wrong");
}
if (snapshot.hasData && !snapshot.data!.exists) {
return Text("Document does not exist");
}
if (snapshot.connectionState == ConnectionState.done) {
Map<String, dynamic> data = snapshot.data!.data() as Map<String, dynamic>;
return Text("Full Name: ${data['full_name']} ${data['last_name']}");
}
return Text("loading");
},
);
}
}
它工作正常,但我想像这样将这些方法作为 function 放入我的 Provider
Future<DocumentSnapshot> getUserName(String uid) => _database.doc(uid).snapshots();
so I want to put a function into provider class when I call this function it return a field data of this documents... (Replace GetUserName class as shown app, to be a function method only)
那么如何编写此 function 以及如何将其称为 map 数据?
编辑:
如图所示:
在这里,我将数据作为 StreamBuilder 并且工作正常
这里是我的提供商 class 中 stream 的解释方法
如下图所示
Map<String, dynamic> data
我使用类似的数据
数据['用户名']
它工作正常,所以我想在 My Provider class 中放入 function 并返回一个字符串,例如有两个参数:
文本(我的函数(uid,值)); 它从(uid)返回一个字符串,value = data[value]
在 return HomePage() 之前添加它;
auth.userData = data;
return HomePage();
将其添加到身份验证提供程序中
class Auth implements AuthBase {
Map<String,dynamic>? userData;
String getUserName(String parameter) {
return userData![parameter].toString();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.