首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨颤振TabView更新当前TabView

跨颤振TabView更新当前TabView
EN

Stack Overflow用户
提问于 2019-01-25 17:05:08
回答 1查看 344关注 0票数 1

假设我有带有4个选项卡的主页。其中一个选项卡是一个带有Firebase登录的登录页面,另外3个选项卡需要知道用户是登录还是来宾。

下面是“状态”主页的代码。

代码语言:javascript
复制
Widget build(BuildContext context) {
    FirebaseAuth.instance.onAuthStateChanged.listen((FirebaseUser user) {
      currentUser = user;
    });

    return Scaffold(
      appBar: AppBar(
        bottom: TabBar(
          isScrollable: true,
          tabs: allTabs,
          controller: _tabController,
        ),
        title: Text(
          "app title",
        ),
      ),
      body: TabBarView(
        children: <Widget>[
          ItemsList(currentUser),
          CategoriesList(),
          currentUser == null ? LoginPage() : ProfileWidget(),
          NewsfeedWidget(currentUser ),
          ItemsList(currentUser , showOnlyFav),
          AboutUs(),
        ],
        controller: _tabController,
      ),
    );
  }

问题:

即使我成功地从登录页面登录,其他选项卡也没有反映当前用户。currentUser值始终为空。

当有登录/注销时,我应该如何使登录细节即时更新所有页面?

更新:我已经尝试过将TabBarView包装在StreamBuilder中。但是仍然是一样的,而且页面也经常刷新。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-25 18:32:16

您可以根据来自StreamBuilder的流将当前代码包装在FirebaseAuth中。这样,无论何时用户登录状态发生变化,您的布局都可以访问用户:

代码语言:javascript
复制
Widget build(BuildContext context) {    
    return Scaffold(
      appBar: AppBar(
        bottom: TabBar(
          isScrollable: true,
          tabs: allTabs,
          controller: _tabController,
        ),
        title: Text(
          "app title",
        ),
      ),
      body: 
      StreamBuilder<FirebaseUser>(
        stream: FirebaseAuth.instance.onAuthStateChanged,
        builder: (ctx, snapshot) {
          return TabBarView(
            children: <Widget>[
              ItemsList(snapshot.data),
              CategoriesList(),
              snapshot.data == null ? LoginPage() : ProfileWidget(),
              NewsfeedWidget(snapshot.data),
              ItemsList(snapshot.data , showOnlyFav),
              AboutUs(),
            ],
          controller: _tabController,
      ),}
    );
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54369803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档