【问题标题】:Is there any way to get dynamic data from firebase in flutter有什么办法可以在颤动中从firebase获取动态数据
【发布时间】:2021-04-15 05:01:25
【问题描述】:

我将 Firebase 中的数据更新为字符串。这包括文本、链接、视频链接。如图-Screenshot of content data 现在我想在颤振应用程序中检索内容。我正在检索如下内容-

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';

class Test extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
        stream: FirebaseFirestore.instance
            .collection("Insights")
            .orderBy("Time", descending: true)
            .snapshots(),
        builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
          return ListView.builder(
              itemCount: snapshot.data.docs.length,
              itemBuilder: (context, index) {
                return Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: Container(
                      child: Text(
                    (snapshot.data.docs[index]['Content'])
                        .toString()
                        .replaceAll("\\n", "\n"),
                    style: TextStyle(fontSize: 18),
                  )),
                );
              });
        });
  }
}

当我像上面那样检索数据时,它会将文本和链接显示为字符串。但我想获得像Inkwell in between text and links to video 这样的数据。如图所示,它有墨水瓶,文字和图像显示。

但在我的情况下,所有内容都显示为文本。

有没有什么方法可以动态地包含这些数据而无需在 Flutter 中明确定义或在 firebase 中以任何方式处理它们?

【问题讨论】:

  • 您可以简单地为 URL 添加一个单独的参数以简化操作,例如 {"content":content, "url":'www.youtube.com/?1243'}
  • @Ayyaz.meo 感谢您的快速回复。如果我这样做,我将如何处理文本的 url 标记。这意味着我需要在 Flutter 中明确提及 Inkwell。如果我需要像我用多个墨水池附加图像一样获取数据怎么办。那我该如何处理呢?
  • 像这样:InkWell(onTap:(){ launchUrl(snapshot.data.docs[index]['url'])},child:ListViewBuilder(snapshot.data.docs[index]['内容']))
  • @Ayyaz.meo 感谢您的详细解释,但我再次怀疑如何将 url 映射到文本,即在多个墨水池对象的情况下哪个 url 将附加到哪个文本。就像我在输出图像中附加的一样。

标签: firebase flutter flutter-layout


【解决方案1】:

您可以单击该链接以使用以下 sn-p 观看 youtube 视频。 在链接顶部,它会将您重定向到提供的链接。

InkWell(
            onTap: (){
              launch(Uri.parse(snapshot.data.docs[index]['Content']));
            },
              child: Text(
                (snapshot.data.docs[index]['Content'])
                    .toString()
                    .replaceAll("\\n", "\n"),
                style: TextStyle(fontSize: 18),
              )),

用 InkWell 代替容器。

注意:为了启动 URL,我使用了包 url_launcher:https://pub.dev/packages/url_launcher

【讨论】:

  • 感谢您的快速回复。我忘了提到,内容除了链接之外还包括文本,我也更新了问题。我也附上了输出。它也适用于其余文本吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-12
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
相关资源
最近更新 更多