当我不在Flutter中使用ListView.builder构造函数时,单个项目将按预期从JSON API中显示:
当我使用ListView.builder时,什么都没有显示。没有错误!
我也尝试了仅使用文本的列表视图,这似乎也不起作用。 这是代码:
@override
Widget build(BuildContext context) {
return Container(
child: new Scaffold(
appBar: AppBar(
title: Text("the title"),//TODO edit this
backgroundColor: Colors.blueAccent),
body:
Column(
children: <Widget>[
FutureBuilder<List<dynamic>>(
future: getPosts2(),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);
return snapshot.hasData
? ListViewPosts(postsFrom: snapshot.data)
: Center(child: CircularProgressIndicator());
},
),
],
),
),
);
}
}
这是ListViewPosts无状态小组件:
class ListViewPosts extends
StatelessWidget {
final List<dynamic> postsFrom;
ListViewPosts({Key key,
this.postsFrom}) : super(key: key);
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
FadeInImage.assetNetwork(
placeholder: 'assets/images/placeholder.png',
image: postsFrom[1]["featured_media"] == 0
? 'assets/images/placeholder.png'
: postsFrom[1]["_embedded"]["wp:featuredmedia"]
[0]["source_url"],
),
FadeInImage.assetNetwork(
placeholder: 'assets/images/placeholder.png',
image: postsFrom[2]["featured_media"] == 0
? 'assets/images/placeholder.png'
: postsFrom[2]["_embedded"]["wp:featuredmedia"]
[0]["source_url"],
),
new Row(
children: <Widget>[
Expanded(
child: Text(
"نووسهر: " +
postsFrom[1]["_embedded"]["author"][0]
["name"],
textAlign: TextAlign.right,
),
),
Expanded(
child: Text(
dateConvertor(
postsFrom[2]["date"].toString()),
textAlign: TextAlign.left,
),
),
],
),
ListView.builder(
itemCount: postsFrom.length, //== null ? 0 : postsFrom.length,
itemBuilder: (context, int index) {
Card(
child: Column(
children: <Widget>[
Text(postsFrom.toString()),
Container(
child: hawalImage(postsFrom, index),
),
new Padding(
padding: EdgeInsets.all(5.0),
child: new ListTile(
title: new Text("whatEver"),
subtitle: new Row(
children: <Widget>[
Expanded(
child: new Text(postsFrom[index]["title"]["rendered"]),
),
Expanded(
child: hawalDate(postsFrom, index),
),
],
),
),
),
new ButtonTheme.bar(
child: hawalBtnBar(),
),
],
),
);
},
),
答案 0 :(得分:2)
您必须在构建器函数的大括号的开头写上Expanded
。另外,我在此处使用ListView
会很谨慎,这可能会导致一些错误。
您还可以将Column
放在SizedBox
内而不定义其高度,因此它将无限期占用空间。将其包装在提供高度限制(Expanded
, Set rng = Sheets("HAOD").Range("A2", Sheets("HAOD").Cells( Sheets("HAOD").Range("a1000000").End(xlUp).row, Sheets("HAOD").Range("xfd1").End(xlToLeft).Column))
,...)的小部件中
答案 1 :(得分:1)
与Expanded
一起使用。希望它将解决您的问题。
答案 2 :(得分:0)
您必须在构建器函数的大括号的开头写上return Card
。另外,我在此处使用Expanded
会很谨慎,这可能会导致一些错误。
答案 3 :(得分:0)
在 Listview.builder()
中,您可以尝试添加属性 shrinkWrap: true
。
这对我有用。我遇到了类似的问题。