在哪里添加此查询/函数?因此,它可以在整个应用程序中运行



我有底部导航栏,里面总共有5个导航,还有一个底部导航栏(HOME NAV:-这是用户访问应用程序时的第一个屏幕(,里面还有TabBar,有4个选项卡。在第一个选项卡中,每个其他用户都有帖子,当前用户可以喜欢/不喜欢该帖子。我有一个功能,如果用户看到那个帖子,它就不应该再出现了。现在我面临的问题是,如果用户只停留在主页导航上,它在发布时会看到所有帖子,然后转到主页导航中的其他选项卡,那么它工作正常,但如果用户切换到其他底部导航项目,然后在主页导航中再次访问,那么所有帖子都会重新开始,用户已经看到了。我还添加了这个FUNCTION getUserList来检查哪个用户已经看到了,但它只在用户在TABS之间切换时有效,而在用户切换到其他底部导航项目并再次访问时无效。请帮我把功能放在正确的地方,这样它就可以一直工作。

Future getUserList() async {
List checkedUser = [];
FirebaseFirestore.instance

.collection('/users/${currentUser.uid}/CheckedUser')
.get()
.then((data) {
checkedUser.addAll(data.docs.map((f) => f.data().containsKey(['DislikedUser'])));
checkedUser.addAll(data.docs.map((f) => f.data().containsKey(['LikedUser'])));
}).then((_) {
query().get().then((data) async {
if (data.docs.length < 1) {
print("no more data");
return;
}
users.clear();
userRemoved.clear();
});
});
}

这是底部选项卡:-

Widget findWidget(int index){
if(index == 0)
return Home();
else if(index == 1)
return UserProfile(FirebaseAuth.instance.currentUser, imageList: [], currentIndex: 0);
else if(index == 2)
return Notifications();
else if(index == 3)
return Chat();
else
return More();
}

这是主页导航中的TAB栏:-

body: TabBarView(
physics: const NeverScrollableScrollPhysics(),
controller: _tabController,
children: [
Center(child : SwipeScreen(currentUser, users, swipecount)),
Icon(Icons.movie),
Icon(Icons.games),
Icon(Icons.online_prediction)
]),

我不太确定这是否是你想要的,但还是要试一试。

如果您希望小部件从离开的位置继续,而不重新渲染,则可以使用KEY执行此操作。

基本上,每次为flutter渲染类时都需要传递相同的键,以便知道将来不会再次渲染它。

为此,请在Home()类中接受密钥

class Home extends StatefulWidget
{
Key key;
Home(key);
}

并像这样使用:

if(index == 0)
return Home(Key('Home'));

这应该可以防止颤振再次出现。

注意:在某些情况下,您可能需要重新渲染小部件。在这种情况下,你将不得不提出一些你自己的逻辑。

相关内容

最新更新