标签: stream-builder

如何访问 StreamBuilder 中的多个流?

我试图StreamBuilder在我的初始流的构建器中创建一个新的,虽然我没有收到任何错误,但它似乎也不起作用。这是可能的吗?

基本上,我正在访问 Firebase 中的根集合。这个集合包含两个文档,我需要每个文档的数据,因为我正在构建一个包含来自两个路径的信息的 DataTable。

编辑:嵌套的 StreamBuilder 不起作用,因为 StreamBuilder 必须返回一个小部件,所以至少我知道它为什么不起作用。但我仍然没有决定要做什么。

flutter stream-builder

6
推荐指数
1
解决办法
2215
查看次数

Flutter 中来自 PHP 的 API 流(不是 Firebase)

假设我有一个 API - 例如:https : //jsonplaceholder.typicode.com/posts

现在,我想使用具有 ListTiles 的 ListView 将 StreamBuilder 应用到它。如何配置?如何为其创建流?

我完全理解 firebase 和 firestore 流。我想了解我是否有一个来自 PHP 的 API 并且我想构建一个 StreamBuilder,我该怎么做。

api stream dart flutter stream-builder

6
推荐指数
2
解决办法
1万
查看次数

Flutter StreamBuilder 在初始化时调用了两次

StreamBuilder 总是被调用两次吗?一次用于初始数据,然后一次用于输入流?

初始化以下 StreamBuilder 显示构建方法被调用了两次。第二个调用是在第一个调用之后的 0.4 秒。

流:构建 1566239814897

流:构建 1566239815284

import 'dart:async';
import 'dart:ui';

import 'package:flutter/material.dart';
import 'package:nocd/utils/bloc_provider.dart';

void main() =>
    runApp(BlocProvider<MyAppBloc>(bloc: MyAppBloc(), child: MyApp()));

class MyAppBloc extends BlocBase {
  String _page = window.defaultRouteName ?? "";

  /// Stream for [getPage].
  StreamController<String> pageController = StreamController<String>();

  /// Observable navigation route value.
  Stream get getPage => pageController.stream;

  MyAppBloc() {}

  @override
  void dispose() {
    pageController.close();
  }
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final MyAppBloc myAppBloc = BlocProvider.of<MyAppBloc>(context);
    return …
Run Code Online (Sandbox Code Playgroud)

dart flutter stream-builder

6
推荐指数
3
解决办法
4943
查看次数

Flutter - 在使用 StreamBuilder 从 firebase 获取数据后,如何使用 ScrollController 跳转到列表视图的底部?

在使用firestore查询流从streambuilder呈现数据后,在列表中使用ScrollController滚动到列表底部的最佳方法是什么?

使用 scrollcontroller.jumpto 方法的最佳位置是什么?

// initialisation
ScrollController scrollController=ScrollController();

// inside initstate() and build method with 1000ms delay - not working
scrollController.jumpTo(scrollController.position.maxScrollExtent);

// widget inside build method
Expanded(
                child: StreamBuilder<DocumentSnapshot>(
                    stream: Firestore.instance
                        .collection('Data')
                        .document(widget.dataID)
                        .snapshots(),
                    builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) {
                      print("Called");
                      if (!snapshot.hasData) {
                        return Text("Loading");
                      }
                      var info= snapshot.data.data;
                      if (info!= null &&
                          info["messages"] != null &&
                          info["messages"].length > 0 &&
                          userList.length > 0) {
                        return ListView.builder(
                          controller: scrollController,
                          itemCount: info["challengeReplies"].length,
                          itemBuilder: (BuildContext context, int index) {

                            return ChallengeReplyListItem(
                                currentUserID: …
Run Code Online (Sandbox Code Playgroud)

listview scroll flutter flutter-layout stream-builder

6
推荐指数
1
解决办法
801
查看次数

Flutter:使用 ListView 实现 StreamBuilder 中数据的搜索功能

在我的 Flutter 应用程序中,我有一个包含所有用户的屏幕。用户列表由 a 生成StreamBuilder,它从 Cloud Firestore 获取数据并在 a 中显示用户ListView。为了改进功能,我希望能够使用Appbar.

我已经尝试过这个答案并且效果很好,但我不知道如何让它StreamBuilder在我的情况下工作。作为一个颤振初学者,我将不胜感激任何帮助!下面我包括了我的用户屏幕和StreamBuilder.

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

class UsersScreen extends StatefulWidget {
  static const String id = 'users_screen';

  @override
  _UsersScreenState createState() => _UsersScreenState();
}

class _UsersScreenState extends State<UsersScreen> {
  static Map<String, dynamic> userDetails = {};
  static final String environment = userDetails['environment'];
  Widget appBarTitle = Text('Manage all users');
  Icon actionIcon = Icon(Icons.search);
  final TextEditingController _controller = TextEditingController();
  String approved …
Run Code Online (Sandbox Code Playgroud)

listview dart flutter stream-builder

6
推荐指数
1
解决办法
8264
查看次数

如何在firebase firestore中合并多个流

在你说这是一个重复的问题或者我应该使用嵌套流构建器之前,请听我说。

我正在设计一个社交媒体类型的应用程序。我希望用户在他们关注的人在他们的“我的关注者帖子”集合中发布一些内容时收到更新。在应用程序中,应用程序将检查当前用户的关注列表(他关注的人)的 firebase rtdb 并列出他们的 uid。

我计划使用所述列表来创建流列表(当然按时间排序)并将它们合并到一个流中,然后将其输入到私有提要页面上的流构建器中。

在此页面上,用户将能够轻松关注他们感兴趣的人发布的内容。

我认为这样的系统比在“私人订阅源”集合中拥有文档的每个用户更具成本效益,每当有人发布内容时,该应用程序都会读取他们的关注者列表,然后立即在他们的每个人中发布更新私人饲料。因为... 想象一个拥有 200 万粉丝的人。即瞬间写入 200 万次。后来,阅读了 200 万次。我认为对于发帖人来说,将帖子放在他们的“publicFeed”中会更具成本效益,而不同的关注者只需收听该提要并与他们保持联系。

但是.. 这需要实现多个流(超过 2 个)的合并。我该怎么做呢?

我曾尝试阅读 RxDart,但它对我来说完全是希腊文。我是飞镖的初学者。我现在只编码了大约 5 个月。

merge stream firebase flutter stream-builder

6
推荐指数
1
解决办法
675
查看次数

更新持久存储失败 - Galaxy Tab S6/Linux

使用“flutter clean”和“flutter run”将任何 Flutter 应用程序从我的 Linux 计算机运行到我的 Galaxy Tab S6 时,我遇到了“更新持久存储”失败。这是在我向我目前正在开发的应用程序添加更多 StreamBuilders 后才开始发生的事情,即使我注释掉这些流,它也会继续发生。任何有关正在发生的事情的帮助或想法将不胜感激!

F/OIC_SRM_DOXM(14551): UpdatePersistentStorage failed!
Run Code Online (Sandbox Code Playgroud)

persistent-storage flutter stream-builder

6
推荐指数
0
解决办法
1502
查看次数

更改 Firebase 实时数据库中的值时如何查看 flutter 应用程序的更改?

在此处输入图片说明

每当我在 Firebase 实时数据库中进行任何更改时,我都会尝试使这些滚动开关更改其值。

更具体地说,每当我将 Relay1/Data 的值更改为 0 时,我都希望该开关变为非活动状态。

我已经尝试并四处寻找,但找不到任何解决方案。

  bool relay1pressed;
  final databaseReferenceTest = FirebaseDatabase.instance.reference();



@override
  void initState() {
    super.initState();

    databaseReferenceTest
        .child('MedicalCenter')
        .once()
        .then((DataSnapshot snapshot) {
      String value = snapshot.value['Relay1']['Data'];
      print('Value is $value');
      if (value == '1') {
        relay1pressed = true;
      } else
        relay1pressed = false;

      setState(() {
        isLoading = true;
      });
    });
  }

  
//Widget build

            StreamBuilder(
              stream: databaseReferenceTest
                  .child('MedicalCenter')
                  .child('Relay1')
                  .onValue,
              builder: (BuildContext context, AsyncSnapshot<Event> snapshot) {
                databaseReferenceTest
                    .child('MedicalCenter')
                    .once()
                    .then((DataSnapshot snapshot) {
                  String value = snapshot.value['Relay1']['Data'];
                  print('Value is …
Run Code Online (Sandbox Code Playgroud)

real-time firebase firebase-realtime-database flutter stream-builder

5
推荐指数
1
解决办法
5190
查看次数

Flutter:如何为 StreamBuilder 制作 http 流

你好

我正在尝试使用 Flutter 制作我的第一个社交应用程序,但我陷入了困境。我想从我的 api 获取我的消息(在两个用户之间的对话中)。当我使用 Future 和 Future Builder 时这不是问题,但我希望在发送新消息时更新消息列表!

我发现我们可以用流来实现它,但每次我尝试将我的 Future In Stream 转换时,它仍然有效,但就像它是一个 Future (它永远不会更新新消息)。

这里是我的代码的简化部分:


class Test extends StatelessWidget {
  
  final Conv conv;
  final User otherUser;

  const Test({Key key, this.conv, this.otherUser}) : super(key: key);
  
  

  Stream<List<Message>> messageFlow(String convId) {
    return Stream.fromFuture(getMessages(convId));
  }

  Future<List<Message>> getMessages(String convId) async {
    var data = await http
        .post(MyApiUrl, headers: <String, String>{}, body: <String, String>{
      "someParam": "param",
      "id": convId,
    });
    var jsonData = json.decode(data.body);

    List<Message> messages = [];
    for (var m in jsonData) …
Run Code Online (Sandbox Code Playgroud)

future http stream flutter stream-builder

5
推荐指数
1
解决办法
1万
查看次数

Flutter StreamBuilder 在加载时删除旧数据

目前,我有一个 StreamBuilder 从 Firebase 中为群组消息应用程序提取数据。我有一个 snapshot.hasData 检查以确保在显示消息之前有数据。问题是,当 setState 重建小部件时,它也会重建 StreamBuilder,导致它在再次完成加载数据之前显示静态 snapshot.hasData == false 内容。这看起来真的很糟糕,因为它加载得太快了,以至于每次重建时屏幕看起来都会闪烁一秒钟。

我如何在数据重新加载时保留数据,这样它就不会闪烁?

有没有办法可以防止 StreamBuilder 在特定情况下重建?

谢谢!

编辑添加的当前代码。

var firebaseStream;
  @override
  void initState() {
    super.initState();
    firebaseStream = Firestore.instance
        .collection('groups')
        .document(groupID)
        .collection('messages')
        .orderBy('date', descending: true)
        .limit(15)
        .snapshots();

StreamBuilder(
  stream: firebaseStream,
  builder: (context, snapshot) {
     if (!snapshot.hasData)
        return Container(
           color: Colors.red,);
        return ListView.builder(
Run Code Online (Sandbox Code Playgroud)

dart flutter stream-builder

5
推荐指数
1
解决办法
2333
查看次数