我已经成功地在列表 View 中显示了API响应,但是我想在按下列表 View 时可以获取列表 View 项的ID。我如何获得ID?

我有如下的API响应:

"payload": [
{
"id": "402",
"desc": "FAR"
},
{
"id": "406",
"desc": "HGR"
},
{
"id": "403",
"desc": "Baf"
},
]

这是我制造的集团:
我很困惑如何单击列表 View 项时获取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,
            ),
          );
        }
    );
  }
}

最佳答案

您可以在ListTile中添加onTap

onTap:() {
     print("${snapshot.data[index].id}");
},

10-07 12:59