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

标签 firebase flutter dart google-cloud-firestore stream-builder

我想知道如何将我的函数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/

    相关文章:

    flutter - 如何在 Flutter 中更新我的 ListView 并解决 StateFull Widget 的问题?

    android - 任务 ':app:mergeLibDexDebug' 执行失败

    firebase - 当应用程序已经在运行并且使用Firebase动态链接时,导航不起作用

    json - 在 Flutter 中从 JSON 创建列表

    flutter - 如何使用 flutter cloud_firestore 插件从 DocumentID 获取 documetReference

    ios - 在谷歌登录后使用 Swift 4 推送 View Controller

    node.js - 如何获取 Firebase 中另一个集合的文档中的集合

    java - firebase startAt() endAt() 方法

    flutter - 我想为我所有的屏幕创建一个固定的 Appbar

    javascript - 将用户数据从一个屏幕传递到另一个屏幕 - React Native