Чернильница для чайников - PullRequest
0 голосов
/ 24 октября 2018

(... и с пустышками я имею в виду себя)

что я тут не так делаю?Я не вижу никакой анимации, я пытался изменить порядок контейнера / чернильницы, потому что где-то видел, что это создает какую-то проблему, но я застрял.Кто-нибудь может помочь?

  class CardButton extends StatelessWidget {
  final String input;
  CardButton({this.input});

  Widget build(BuildContext context) {
    return Container(
      color: Colors.grey[100],
      width: 50.0,
      height: 50.0,
      alignment: Alignment.center,
      child: Material(
        child: InkWell(
          splashColor: Colors.amber,
          onTap: draw(),
          child: Text(input),
        ),
      ),
    );
  }
}

draw() {
  //todo
}

заранее спасибо

[править 25/10]

Я опробовал некоторые из предложенных решений, но в виджете, где этоодин «вложенный» выдает мне ошибку,

пишет виджет, где я использую «CardButton» ниже:

   class CardGrid extends StatelessWidget {
  final List<String> cardList = [
    'A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'];

  @override
  Widget build(BuildContext context) {
    return Container(
      width: 300.0,
      child: Column(
        children: <Widget>[
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              CardButton(input: cardList[0]),
              CardButton(input: cardList[1]),
              CardButton(input: cardList[2])
            ],
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              CardButton(input: cardList[3]),
              CardButton(input: cardList[4]),
              CardButton(input: cardList[5])
            ],
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              CardButton(input: cardList[6]),
              CardButton(input: cardList[7]),
              CardButton(input: cardList[8])
            ],
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              CardButton(input: cardList[9]),
              CardButton(input: cardList[10]),
              CardButton(input: cardList[11]),
              CardButton(input: cardList[12])
            ],
          ),
        ],
      ),
    );
  }
}

Я добавляю сюда скриншот приложения, первыйс моим исходным кодом, второй (с ошибкой) с "предлагаемым" решением

original code modified code

1 Ответ

0 голосов
/ 25 октября 2018

Вам необходимо передать функцию onTap без фигурных скобок:

child: InkWell(
  splashColor: Colors.amber,
  onTap: draw, // don't use braces here (except your function returns
               // a reference to the actual onTap function.                      
  child: Text(input),
),

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

Материал> InkWell> Контейнер> Текст

  Widget build(BuildContext context) {
    return Material(
      color: Colors.grey[100],
      child: InkWell(
        splashColor: Colors.amber,
        onTap: draw,
        child: Container(
          width: 100.0,
          height: 100.0,
          alignment: Alignment.center,
          child: Text(input),
        ),
      ),
    );
  }
...