List 如果网格列表在Flatter中为空,请插入文本()
我正在开发一个颤振应用程序,在我的List 如果网格列表在Flatter中为空,请插入文本(),list,flutter,grid,future,List,Flutter,Grid,Future,我正在开发一个颤振应用程序,在我的Main路线中,我有一个网格列表,由数据库检索的元素填充。 当网格为空时,我想布局一条Text()消息,或者类似的东西, 永久。 我用 list() { return Container( child: FutureBuilder( future: pets, builder: (context, snapshot) { if (!snapshot.hasData || snapshot.da
Main
路线中,我有一个网格列表
,由数据库检索的元素填充。
当网格为空时,我想布局一条Text()
消息,或者类似的东西,
永久。
我用
list() {
return Container(
child: FutureBuilder(
future: pets,
builder: (context, snapshot) {
if (!snapshot.hasData || snapshot.data == null) {
return emptyGrid();
}
else
return imageGrid(snapshot.data);
},
),
);
}
emptyGrid在哪里
Container emptyGrid() {
return Container(
child: Center(
child: Column(
children: <Widget>[
Text("No Data Found")
],
),
),
);
}
Container emptyGrid(){
返回容器(
儿童:中心(
子:列(
儿童:[
文本(“未找到数据”)
],
),
),
);
}
问题是,emptyGrid
布局正确,但之后立即消失。尝试以下操作:
Widget build(BuildContext context) {
return new Container(
child: new FutureBuilder(
future: FirebaseDatabase.instance.reference().child("table").once(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasData) {
if (snapshot.data!=null) {
return new Column (
children: imageGrid(snapshot.data),
);
} else {
return Container(
child: Center(
child: Column(
children: <Widget>[
Text("No Data Found")
],
),
),
);
}
}
}
)
);
}
小部件构建(构建上下文){
退回新货柜(
孩子:新未来建设者(
future:FirebaseDatabase.instance.reference().child(“表”).once(),
生成器:(BuildContext上下文,异步快照){
if(snapshot.hasData){
if(snapshot.data!=null){
返回新列(
子项:imageGrid(snapshot.data),
);
}否则{
返回容器(
儿童:中心(
子:列(
儿童:[
文本(“未找到数据”)
],
),
),
);
}
}
}
)
);
}
试试这个:
Widget build(BuildContext context) {
return new Container(
child: new FutureBuilder(
future: FirebaseDatabase.instance.reference().child("table").once(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasData) {
if (snapshot.data!=null) {
return new Column (
children: imageGrid(snapshot.data),
);
} else {
return Container(
child: Center(
child: Column(
children: <Widget>[
Text("No Data Found")
],
),
),
);
}
}
}
)
);
}
小部件构建(构建上下文){
退回新货柜(
孩子:新未来建设者(
future:FirebaseDatabase.instance.reference().child(“表”).once(),
生成器:(BuildContext上下文,异步快照){
if(snapshot.hasData){
if(snapshot.data!=null){
返回新列(
子项:imageGrid(snapshot.data),
);
}否则{
返回容器(
儿童:中心(
子:列(
儿童:[
文本(“未找到数据”)
],
),
),
);
}
}
}
)
);
}
您需要修改您的列表()
,如下所示:
您需要检查列表长度是否为零
list() {
return Container(
child: FutureBuilder(
future: pets,
builder: (context, snapshot) {
if (!snapshot.hasData || snapshot.data == null) {
return Text('Loading.....');
} else if (snapshot.data.length == 0) {
return emptyGrid();
} else {
return imageGrid(snapshot.data);
}
},
),
);
}
您需要修改
列表()
,如下所示:
您需要检查列表长度是否为零
list() {
return Container(
child: FutureBuilder(
future: pets,
builder: (context, snapshot) {
if (!snapshot.hasData || snapshot.data == null) {
return Text('Loading.....');
} else if (snapshot.data.length == 0) {
return emptyGrid();
} else {
return imageGrid(snapshot.data);
}
},
),
);
}
听起来你的数据库正在返回数据。您打印出快照的值了吗?您必须在
小部件构建
method@EricDuffett我打印。我的数据库是空的。“没有数据”被列出来,但就在那一秒钟,你的数据库似乎又回来了数据。您打印出快照的值了吗?您必须在小部件构建
method@EricDuffett我打印。我的数据库是空的。“没有数据”的布局,但只是一秒钟,我把它放在一个小部件,但问题再次出现!与之前相同:文本(“未找到数据”)仅显示一秒钟,不会保留在屏幕上。您在构建方法中尝试过上述代码吗?然后屏幕上会显示什么?是的。显示“未找到数据”一秒钟,然后消失。我把它放在一个小部件中,但问题再次出现!与之前相同:文本(“未找到数据”)仅显示一秒钟,不会保留在屏幕上。您在构建方法中尝试过上述代码吗?然后屏幕上会显示什么?是的。显示“未找到数据”一秒钟,然后消失。