flutter - 在颤动中创建底片
问题描述
我试图在颤动中创建一个如下所示的 ModelbottomSheet
我设法创建了一个复选框,用于我在地图中维护的复选框,
List<Map<String, Object>> status = [
{"id": "1", "value": "Started"},
{"id": "2", "value": "Partially done"},
{"id": "3", "value": "Finished"}
];
我正在循环它,我能够生成 3 个复选框。但是我在显示标题(即“状态”)以及在复选框下方创建一行并显示刻度选项时遇到了困难。
对于勾选选项,我有一个这样的地图列表
List<Map<String, Object>> time;
time= [
{"id": "1", "value": "Daily"},
{"id": "7", "value": "Weekly"},
{"id": "30", "value": "Monthly"}
];
帮助我创建这样的底部表。
谢谢
解决方案
你可以检查下面的代码我已经实现了这种方式
List<CheckBoxData> checkboxDataList = [
new CheckBoxData(id: '1', displayId: 'check1', checked: true),
new CheckBoxData(id: '2', displayId: 'check2', checked: false),
new CheckBoxData(id: '3', displayId: 'check3', checked: true),
];
void _showModalSheet() {
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context) {
return StatefulBuilder(
builder: (BuildContext context, StateSetter state) {
return SingleChildScrollView(
child: LimitedBox(
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(
top: 20.0, left: 30, bottom: 20),
child: Text(
'Status',
style: TextStyle(color: Colors.black54, fontSize: 18),
),
),
ListView(
shrinkWrap: true,
children: checkboxDataList.map<Widget>(
(data) {
return Container(
child: CheckboxListTile(
value: data.checked,
title: Text(data.displayId),
controlAffinity: ListTileControlAffinity.leading,
onChanged: (bool val) {
state(() {
data.checked = !data.checked;
});
},
),
);
},
).toList(),
),
Divider(color: Colors.grey,),
Padding(
padding: const EdgeInsets.only(
top: 20.0, left: 30, bottom: 20),
child: Text(
'Time',
style: TextStyle(color: Colors.black54, fontSize: 18),
),
),
ListView(
shrinkWrap: true,
children: checkboxDataList.map<Widget>(
(data) {
return Container(
child: CheckboxListTile(
value: data.checked,
title: Text(data.displayId),
controlAffinity: ListTileControlAffinity.leading,
onChanged: (bool val) {
state(() {
data.checked = !data.checked;
});
},
),
);
},
).toList(),
),
],
),
),
);
},
);
},
);
}
复选框数据类
class CheckBoxData {
String id;
String displayId;
bool checked;
CheckBoxData({
this.id,
this.displayId,
this.checked,
});
factory CheckBoxData.fromJson(Map<String, dynamic> json) => CheckBoxData(
id: json["id"] == null ? null : json["id"],
displayId: json["displayId"] == null ? null : json["displayId"],
checked: json["checked"] == null ? null : json["checked"],
);
Map<String, dynamic> toJson() => {
"id": id == null ? null : id,
"displayId": displayId == null ? null : displayId,
"checked": checked == null ? null : checked,
};
}
推荐阅读
- python - 使用 python 2.7.12 在 Ubuntu 16.04 服务器上进行视频流式传输期间发生错误
- javascript - 显示来自本地 JSON 文件的数据
- php - 二维数组的 AWS API 网关映射模型
- angular - Html2Canvas 只呈现我屏幕的一半
- delphi - 如何设置 Windows Media Player 在特定位置显示帧
- android - 当我在带有数据绑定的 xml 中按“重新格式化代码”时,Android Studio 3.5 更改视图顺序
- symfony - 无法添加“bin/console”命令并在 PhpStorm 的 Xdebug 中运行它
- macos - 无法在 MAC OS 上的 JMeter 中查看侦听器响应正文数据
- javascript - 使浏览器动作模仿服务器请求
- node.js - 使用 kubernetes/client-node 库