Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当屏幕未从Firebase调用数据时,如何显示文本小部件_Firebase_Flutter_Widget - Fatal编程技术网

当屏幕未从Firebase调用数据时,如何显示文本小部件

当屏幕未从Firebase调用数据时,如何显示文本小部件,firebase,flutter,widget,Firebase,Flutter,Widget,我有一个从Firebase获取数据的活动屏幕,当数据库不提供数据时,我试图显示一条类似“还没有活动”的文本消息 我尝试使用一个三元运算符条件来检查数据库是否为空,它是否工作,但是,问题是,当我进入“活动”屏幕并且它有数据时,它仍然会显示消息约1秒,然后显示“活动”屏幕,因此,我想知道是否有更好的方法来实现这一点 希望这是有意义的 请参见下面的代码 @override Widget build(BuildContext context) { return Scaffold(

我有一个从Firebase获取数据的活动屏幕,当数据库不提供数据时,我试图显示一条类似“还没有活动”的文本消息

我尝试使用一个三元运算符条件来检查数据库是否为空,它是否工作,但是,问题是,当我进入“活动”屏幕并且它有数据时,它仍然会显示消息约1秒,然后显示“活动”屏幕,因此,我想知道是否有更好的方法来实现这一点

希望这是有意义的

请参见下面的代码

      @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