【问题标题】:how do I get the listview id when the listview is clicked in bloc flutter?当在 bloc flutter 中单击列表视图时,如何获取列表视图 ID?
【发布时间】:2020-04-29 06:49:21
【问题描述】:

我已成功在列表视图中显示 API 响应,但我希望在按下列表视图时获得列表视图项的 id。身份证怎么弄???

我有如下 API 响应:

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

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

【问题讨论】:

  • 不完全确定我是否正确理解了这个问题。但你不是已经解决了这个问题吗?如果您可以访问 snapshot.data[index].desc 那么您也可以访问 snapshot.data[index].id 。

标签: listview flutter dart


【解决方案1】:

您可以在 ListTile 中添加onTap,

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2021-07-17
    相关资源
    最近更新 更多