【问题标题】:Flutter: Update AppBar title from Streambuilder?Flutter:从 Streambuilder 更新 AppBar 标题?
【发布时间】:2019-06-04 15:25:29
【问题描述】:

我正在从 Streambuilder 填充 ListView,并希望在 AppBar 标题中显示文档的长度/nr。现在,每当流发生变化时,我都会调用 SetState 。它有效,但“感觉”有点资源重。有什么想法吗?

提前致谢。

最好, /j

StreamBuilder(
    stream: Firestore.instance.collection('users').snapshots(),
    builder: (context, snapshot) {
    if (!snapshot.hasData) return const Text('Loading...');
        appBarTitle = snapshot.data.documents.length;
        Future.delayed(Duration.zero, () {
            setState(() {           
            });
        }); 
    },
);

【问题讨论】:

  • 你需要包含你的代码才能有一个想法。
  • 嗨,Ian,谢谢,在上面添加了代码。最好的,/j
  • 在创建应用栏时不能将标题设置为流构建器,它是否会产生一些错误(从未尝试过,只是想知道)? Future.delayed 是否也为您解决了其他问题?
  • 在 appBar title 中直接使用流生成器。这样就不需要调用 set state 来更新标题了。
  • 谢谢各位,我试试看。 /j

标签: flutter


【解决方案1】:

您可以使用 Stream builder 包装 appBar 的标题,以像此代码一样更新您的屏幕标题

 AppBar(title: StreamBuilder<Object>(
    stream: bloc.myStream,
    builder: (context, snapshot) {
      return yourCustomWidget();
    }
  )

【讨论】:

    猜你喜欢
    • 2020-10-15
    • 2021-09-27
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2021-10-19
    相关资源
    最近更新 更多