listview - 在 bloc flutter 中单击列表视图时如何获取列表视图 ID?
问题描述
我已经成功地在列表视图中显示了 API 响应,但是我想在按下列表视图时获得列表视图项的 id。身份证怎么办???
我有如下 API 响应:
"payload": [
{
"id": "402",
"desc": "FAR"
},
{
"id": "406",
"desc": "HGR"
},
{
"id": "403",
"desc": "Baf"
},
]
这是我制作的块:我很困惑如何在单击列表视图项时获取 ID,它是怎么回事???
class ListMultibillBloc {
final _repository = EresidenceRepository();
SharedPreferences sPrefs;
final BehaviorSubject<List<Payload>> _subject = BehaviorSubject<List<Payload>>();
listMultibill() async{
try{
sPrefs = await SharedPreferences.getInstance();
ListServiceMultibill responses = await _repository.listServiceMultibill(sPrefs.getString("userid"), sPrefs.getString("password"), sPrefs.getString("imei"),
sPrefs.getString("coordinate"), sPrefs.getString("bnr"));
List<Payload> list = responses.data.payload;
_subject.sink.add(list);
}catch(e){
print(e.toString());
_subject.sink.add(e);
}
}
dispose(){
_subject.close();
}
BehaviorSubject<List<Payload>> get subject => _subject;
}
final listMultibill = ListMultibillBloc();
这是 UI 部分:我可以显示数据列表
class _ListMultibillState extends State<ListMultibill> {
@override
void initState() {
listMultibill.listMultibill();
super.initState();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: StreamBuilder(
stream: listMultibill.subject,
builder: (context, AsyncSnapshot<List<Payload>> snapshot) {
if (snapshot.hasData) {
print(snapshot.data);
return buildList(snapshot);
}else{
Error();
}
},
),
),
);
}
Widget buildList(AsyncSnapshot<List<Payload>> snapshot) {
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(
snapshot.data[index].desc,
style: AppTheme.styleSubTitleBlackSmall,
),
);
}
);
}
}
解决方案
您可以onTap
在 ListTile 中添加,
onTap:() {
print("${snapshot.data[index].id}");
},
推荐阅读
- ios - 快速通知实现
- javascript - VueJS:使用 vue refs 而不是 css id 来控制 div 元素是否有任何性能优势
- pdf - DocumentView 不包含 TabDocumentLoaded 的定义,并且没有扩展方法 TabDocumentLoaded 接受 DocumentView 类型的第一个参数
- flutter - 多个平面按钮链接到不同的列表视图,然后如何使未选中的按钮变灰(不聚焦)
- windows - 如何以我想要的格式将数字更改为命名月份,例如 11,如 11 月
- python - 如何为标题、摘要和日期选择正确的标签
- python - Python中优化的收敛曲线
- azure - 如何在 Azure 上使用沉浸式阅读器?
- python - 从平面列表中查找所有列表和子列表组合
- monitoring - 基于 Telnet 的 check_mk 检查