gpt4 book ai didi

firebase - 如何将它从userUid()获取到StreamBuilder Flutter

转载 作者:行者123 更新时间:2023-12-03 04:18:31 25 4
gpt4 key购买 nike

我想知道如何将我的函数userUid()传递给StreamBuilder {

FirebaseAuth auth = FirebaseAuth.instance;

userUid() async {
final FirebaseUser user = await auth.currentUser;
final uid = user.uid;
return uid;


}
我想传递它的地方,以基于登录的用户UID的文档为基础。
final tabs = [

final documentId = await userUid();
Center(
child: (Scaffold(
body: StreamBuilder (
stream: FirebaseFirestore.instance.collection('users').document(userUid()).snapshots(),
builder: (context, snapshot) {
if (snapshot.data == null) return CircularProgressIndicator();

return Container(
padding: EdgeInsets.all(16),
child: ListView.builder(
当我在 final documentId = await useruid();中传递函数 final tabs =[
我收到错误 error: Expected an identifier. (missing_identifier at lib/pages/home.dart:39) error: Expected to find ']'. (expected_token at lib/pages/home.dart:39)idk我可以做些什么来传递此功能...
与某人知道示例文件,以便我可以研究如何做,
完整代码:
final tabs = [

final documentId = await userUid();
Center(

child: (Scaffold(
body: StreamBuilder (
stream: FirebaseFirestore.instance.collection('users').document(userUid()).snapshots(),
builder: (context, snapshot) {
if (snapshot.data == null) return CircularProgressIndicator();

return Container(
padding: EdgeInsets.all(16),
child: ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) {
DocumentSnapshot manuais =
snapshot.data.documents[index];

return Card(
color: Colors.grey[250],
child: Container(
padding: EdgeInsets.all(10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,

children: <Widget>[

new Image.asset('Images/pdflogo.png', width: 32,
),
Center(
child: Text(
(manuais.data()['nome'].toString()),
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 16),

),
),

ButtonBar(
children: <Widget>[

FlatButton(
child: const Text('Compartilhar / Download'),
onPressed: () async {
var request = await HttpClient().getUrl(Uri.parse(manuais.data()['documento']));
var response = await request.close();Uint8List bytes = await consolidateHttpClientResponseBytes(response);
await Share.file(
'ESYS AMLOG',
'Manual.pdf',
bytes,
'image/jpg');
}),

],
),
],
),
),
);
}),
);
})))),
Center(
child: (Scaffold(
body: StreamBuilder(
stream: FirebaseFirestore.instance.collection('producao').snapshots(),
builder: (context, snapshot) {
if (snapshot.data == null) return CircularProgressIndicator();

return Container(
padding: EdgeInsets.all(16),
child: ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) {
DocumentSnapshot producao =
snapshot.data.documents[index];

return Card(
color: Colors.grey[250],
child: Container(
padding: EdgeInsets.all(10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Center(
child: Image.network(producao.data()['img'].toString(), width: 260,
),

),
Text(
(producao.data()['data'].toString()),
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 22),
),
Text(
(producao.data()['detail'].toString()),
style: TextStyle(fontSize: 16),
),
ButtonBar(
children: <Widget>[

FlatButton(
child: const Text('DETALHES'),
onPressed: () {
ImageViewer.showImageSlider(
images: [
(producao.data()['img']),
//List of images' URLs
],
);

}),
FlatButton(
child: const Text('COMPARTILHAR'),
onPressed: () async {

var request = await HttpClient().getUrl(Uri.parse(producao.data()['img']));
var response = await request.close();Uint8List bytes = await consolidateHttpClientResponseBytes(response);
await Share.file(
'ESYS AMLOG',
'amlog.jpg',
bytes,
'image/jpg'
);
}),
],
),
],
),
),
);
}),
);
})))),
Center(child: Text('Documentos')),
]; //<<<<<<<<<<<<<<< here closes the tab

````











最佳答案

您不能在List内定义变量。您可以做两件事:

  • documentId实例化之前声明List:

  • final documentId = await userUid();
    final tabs = [
    ...
    ];
  • 创建一个返回列表的函数:

  • /// ... simulates the parameters of the function
    List<Widget> getWidgetList(...) async {
    final documentId = await userUid();
    final List<Widget> list = [];
    // To insert in a final list use the method add(...)
    ...
    // Do your logic here
    ...

    return list;
    }

    final tabs = getWidgetList(...);

    关于firebase - 如何将它从userUid()获取到StreamBuilder Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63942950/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com