如何在 flutter 中实现这种随机宽度的 gridview
How to achive this random width grid view in flutter
这些文本将来自休息API。我需要在底部显示这些 sheet。但我不应该保持宽度固定。相反,容器的宽度将取决于文本的长度。如何在 flutter 中实现这个?
GridView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
padding: EdgeInsets.all(0),
itemCount: controller.data.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4,
),
itemBuilder: (BuildContext context, int index) {
return Obx(() => controller.fakeObs.isTrue
? InkWell(
onTap: () {
controller.commentTap(
text: "${controller.data[index]}");
},
child: Container(
color: Colors.white,
child: Text("${controller.data[index]}"),
),
)
: Container());
},
)
不是正确答案但很有帮助..你可以这样做
宽度:控制器。数据[索引]。长度 * 10 + 20
这里的 10 可以是任意数字,但是你想设置宽度,20 是水平填充.. 左边 10,右边 10。
我找到了一个符合我目的的小部件。在这里分享
Wrap(
spacing: 8.0, // gap between adjacent chips
runSpacing: 4.0, // gap between lines
children: <Widget>[
for (int index = 0;
index < controller.data.length;
index++)
FilterChip(
backgroundColor: Colors.white,
elevation: 5,
labelStyle: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold),
label: Text(
"${controller.data[index]}",
style: TextStyle(
fontSize: 10,
fontWeight: AppTextStyle.mediumFont,
color: AppColors.TextGrey),
),
onSelected: (bool value) {
print(
"DATA IS ${controller.data[index]} $value");
},
)
],
),
GridView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
padding: EdgeInsets.all(0),
itemCount: controller.data.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4,
),
itemBuilder: (BuildContext context, int index) {
return Obx(() => controller.fakeObs.isTrue
? InkWell(
onTap: () {
controller.commentTap(
text: "${controller.data[index]}");
},
child: Container(
color: Colors.white,
child: Text("${controller.data[index]}"),
),
)
: Container());
},
)
不是正确答案但很有帮助..你可以这样做 宽度:控制器。数据[索引]。长度 * 10 + 20
这里的 10 可以是任意数字,但是你想设置宽度,20 是水平填充.. 左边 10,右边 10。
我找到了一个符合我目的的小部件。在这里分享
Wrap(
spacing: 8.0, // gap between adjacent chips
runSpacing: 4.0, // gap between lines
children: <Widget>[
for (int index = 0;
index < controller.data.length;
index++)
FilterChip(
backgroundColor: Colors.white,
elevation: 5,
labelStyle: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold),
label: Text(
"${controller.data[index]}",
style: TextStyle(
fontSize: 10,
fontWeight: AppTextStyle.mediumFont,
color: AppColors.TextGrey),
),
onSelected: (bool value) {
print(
"DATA IS ${controller.data[index]} $value");
},
)
],
),