当屏幕未从Firebase调用数据时,如何显示文本小部件
我有一个从Firebase获取数据的活动屏幕,当数据库不提供数据时,我试图显示一条类似“还没有活动”的文本消息 我尝试使用一个三元运算符条件来检查数据库是否为空,它是否工作,但是,问题是,当我进入“活动”屏幕并且它有数据时,它仍然会显示消息约1秒,然后显示“活动”屏幕,因此,我想知道是否有更好的方法来实现这一点 希望这是有意义的 请参见下面的代码当屏幕未从Firebase调用数据时,如何显示文本小部件,firebase,flutter,widget,Firebase,Flutter,Widget,我有一个从Firebase获取数据的活动屏幕,当数据库不提供数据时,我试图显示一条类似“还没有活动”的文本消息 我尝试使用一个三元运算符条件来检查数据库是否为空,它是否工作,但是,问题是,当我进入“活动”屏幕并且它有数据时,它仍然会显示消息约1秒,然后显示“活动”屏幕,因此,我想知道是否有更好的方法来实现这一点 希望这是有意义的 请参见下面的代码 @override Widget build(BuildContext context) { return Scaffold(
@override
Widget build(BuildContext context) {
return Scaffold(
body: RefreshIndicator(
onRefresh: () => _setupActivities(),
child: _activities.isEmpty
? Center(
child: Text(
'Aun no Tienes Notificaciones',
style: ktextTitlesStyle.copyWith(
color: Colors.black,
fontSize: responsive.height(context) / 50),
),
)
: ListView.builder(
itemCount: _activities.length,
itemBuilder: (BuildContext context, int index) {
Activity activity = _activities[index];
return _buildActivity(activity);
},
),
),
);
}
}我不确定是否完全理解您试图完成的任务,但检查AsyncSnapshot上的.hasData可能有助于确定是否返回了数据
Container( child: FutureBuilder(future: someFutureFirebaseDataReturningMethod(), builder: (context, snapshot) {
if (!snapshot.hasData) return _noActiviesYet();
return _showActivies(snapshot, context);
}))
.hasData返回“此快照是否包含非空数据值。”()那么您的
\u活动是一个列表?您从Firebase获取数据,然后将数据放在您的\u活动中
或什么?是的,这是一个列表,这是正确的,每次用户获得一个like时,该数据都保存在数据库中,然后将该数据提取到活动屏幕中,如果用户没有获得任何like,活动屏幕将为空,这正是问题所在,我想在“活动”屏幕为空时向用户显示一些内容,但我有一个问题,即当用户进入“活动”屏幕且屏幕上有数据时,它仍会显示我上面提到的消息约1或2秒,然后显示“活动”屏幕,我希望该消息只显示没有数据的地方。我认为使用StreamBuilder()
可能会有帮助,为什么这会适用于StreamBuilder()?我不明白为什么我需要一个StreamBuilder