flutter - 如何在 GridView.builder cads 中添加不同的信息?
问题描述
我正在尝试在使用 GridView.builder 创建的卡片中添加不同的信息,我想要实现的是不必对所有信息进行硬编码,而是以非静态方式呈现。
我将在此处附上代码:
),
Container(
margin: EdgeInsets.only(top: 350.0),
decoration: BoxDecoration(
color: Colors.white54,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(20.0),
topRight: Radius.circular(20.0),
)
),
),
Container(
margin: EdgeInsets.only(top: 250.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(20.0),
topRight: Radius.circular(20.0),
)
),
child: Padding(
padding: const EdgeInsets.all(16.0),
child: GridView.builder(
itemCount: 8,
itemBuilder: (context, index) => Card(
child: Container(
margin: EdgeInsets.all(4.0),
color: Colors.white,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Icon(Icons.arrow_forward_ios, size: 18.0,),
Text('Hobbies'),
],
),
),
),
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),),
),
),
]
),
),
);
}
}
解决方案
首先,如果您只想显示 8 张卡片,我也会尝试使用简单的 GridView 而没有 .builder :) 那是因为如果您的项目很少,您实际上并不需要 GridView.builder 为您提供的优化。
反正!这就是我所做的:
1-我创建了一个“名称”的虚拟列表来包含我的“数据”:
final List<String> names = [
"Mark",
"Lorenzo",
"Henry",
"Kevin",
"Isabelle",
"Mary",
"Dalia",
"Stella",];
2- 我已将我的姓名列表传递给 itembuilder,使用“索引”指向我的列表中包含的不同字符串。
child: GridView.builder(
padding: const EdgeInsets.all(25),
itemCount: names.length,
itemBuilder: (BuildContext context, index) {
return new Card(
child: Container(
margin: EdgeInsets.all(4.0),
color: Colors.white,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Icon(
Icons.arrow_forward_ios,
size: 18.0,
),
Text(names[index]),
],
),
),
);
},
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
),
如果你有一个对象列表,我建议你不要将它的数字硬编码到 itemCount 中,而是像我上面所做的那样使用 listname.size :) Ofc 这是一个非常基本的例子,向你展示它是如何完成的,对于复杂的(或服务器端/更动态)数据我建议您将其存储到他们自己的类中!
我对 Flutter(和编码)也很陌生,但我希望我提供了一些帮助,更重要的是,提供了正确的答案。
推荐阅读
- python - 将行附加到 csv 文件时出现问题
- maven - maven 目标使用默认的 maven repo 而不是配置的
- reactjs.net - 如何通过其父级中的“id”访问(自定义组件的)元素?(ReactJS.Net)
- kubernetes - K8s:尝试访问集群外的某个域时如何更改 pod 的名称服务器
- flutter - 如何在列内使用 FractionallySizedBox?
- mysql - 我可以在 MYSQL 的 HAVING 子句中使用表别名吗?
- typescript - 功能
( ): T[] => IComponent[] - 不分配给 T - java - Apache POI replaceText() 副作用,改变行距
- excel - 随着行的增加,单元格中的居中形状从顶部增加高度
- swift - 我应该如何将 DispatchGroup 用于两个 url 请求?