Как получить доступ к виджету или тексту только что нажатой кнопки? - PullRequest
0 голосов
/ 12 июля 2020

Я хотел бы добавить кнопку, по которой щелкнули, в список, но я не знаю, как получить доступ к самой нажатой кнопке.

Это мой текущий список кнопок . Создано с помощью:

for (var stand in stands) StandCreation(stand)

Это список, который я хочу заполнить:

List<String||Widget> SelectedStandList = []

Вот как я создаю каждую кнопку ':

import 'package:flutter/material.dart';
class StandCreation extends StatelessWidget {
  final String stand;
  StandCreation(this.stand);

  @override
  Widget build(BuildContext context) {
    return InkWell(
      onTap: () {}, // Here i would like to do something like SelectedStandList.add(tappedInkWell)
      child: Container(
        width: double.infinity,
        margin: const EdgeInsets.only(
          top: 5,
          bottom: 5,
        ),
        padding: const EdgeInsets.all(3.0),
        color: Colors.blue,
        child: Text(
          stand,
          textAlign: TextAlign.center,
          style: TextStyle(
            color: Colors.white,
            fontSize: 23,
            fontWeight: FontWeight.bold,
          ),
        ),
      ),
    );
  }
}

Со списком я хочу затем создать новый экран только выбранных элементов. Ценю любую помощь!

1 Ответ

2 голосов
/ 12 июля 2020

Используйте ListView.builder вместо For l oop. измените свой StandCreation на это:

final VoidCallback onPressed;
StandCreation({this.stand, this.onPressed});

и замените onTap на это:

onTap: onPressed

и, наконец, измените свой For l oop на это:

ListView.builder(
  itemCount: 6, // how many buttons you want
  itemBuilder: (context, index) {
    return StandCreation(stand: stand,
       onPressed:(){
            // Here is your onclick, do whatever you want with it  
        }
    )
   },
)

Если вы хотите, чтобы каждая из ваших onPressed функций имела разные действия, вы можете просто поместить туда оператор If:

   onPressed:(){
        if(index==0) //do something with first button
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...