как получить идентификатор списка при щелчке по списку в блоке blo c flutter? - PullRequest
1 голос
/ 29 апреля 2020

Я успешно отобразил ответы API в виде списка, но я хочу, чтобы при нажатии на просмотр списка я мог получить идентификатор элемента списка. Как я могу получить идентификатор ???

У меня есть ответы API, подобные следующим:

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

Это блок c Я сделал: я запутался, как получить идентификатор когда щелкается элемент списка, как это ???

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();

это часть пользовательского интерфейса: я могу отобразить список данных

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,
            ),
          );
        }
    );
  }
}

1 Ответ

0 голосов
/ 29 апреля 2020

Вы можете добавить onTap в ListTile,

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...