как обернуть с помощью inkwell, чтобы каждая отдельная кнопка в строке могла работать в режиме flutter

#flutter

#flutter

Вопрос:

Как обернуть с помощью inkwell, чтобы каждая отдельная кнопка в строке могла работать.

Вот код:

   Row( 
    mainAxisAlignment: MainAxisAlignment.spaceBetween, 
    crossAxisAlignment: CrossAxisAlignment.center, 
    children: [ 
      _buildSoftUIMenu(LineAwesomeIcons.bookmark,
           Colors.lightBlueAccent, 
           'Std Books'), 
     _buildSoftUIMenu(
          LineAwesomeIcons.dot_circle_o,
          Colors.deepOrangeAccent, 
          'Optional Books'), 
     _buildSoftUIMenu(LineAwesomeIcons.y_combinator,
        Colors.yellowAccent, 
        'Current Affairs'),
    ],
 ),
  

Комментарии:

1. как вы создаете свои кнопки, показать код

2. github.com/mlayah/soft_ui

3. @griffins пожалуйста, обратитесь к ссылке выше и направьте меня! Я застрял между ними! Я новичок в flutter, и я хочу OnTap для каждого значка подряд!

4. пожалуйста, поделитесь _buildSoftUIMenu() кодом здесь, обновите свой вопрос

5. @ArpitAwasthi Я поделился ссылкой на код github выше, пожалуйста, проверьте!

Ответ №1:

Вы можете добавить gesturedetector к этому виджету, а затем вызвать функцию в своем коде

 Widget _buildSoftUIMenu(icon, color, title,{Function ontap}) {
  return GestureDetector(onTap:onTap,  child: Column(
    crossAxisAlignment: CrossAxisAlignment.center,
    children: <Widget>[
      Container(
        height: 100.0,
        width: 100.0,
        margin: EdgeInsets.only(bottom: 16.0),
        decoration: BoxDecoration(
            color: bgColor,
            borderRadius: BorderRadius.circular(16),
            boxShadow: [
              BoxShadow(
                color: lightColor.withOpacity(0.1),
                offset: Offset(-6, -6),
                spreadRadius: 0,
                blurRadius: 6,
              ),
              BoxShadow(
                color: Colors.black26,
                offset: Offset(6, 6),
                spreadRadius: 0,
                blurRadius: 6,
              )
            ]),
        child: Center(
          child: Icon(
            icon,
            size: 46,
            color: color,
          ),
        ),
      ),
      Text(
        title,
        style: subtitleStyle,
      ),
    ],
  );
}
  

теперь вы можете создавать свои виджеты

 _buildSoftUIMenu(LineAwesomeIcons.dot_circle_o,Colors.deepOrangeAccent, 'Optional Books',onTap:(){ print("######")}, 
  

Комментарии:

1. Большое спасибо, брат! 🙂 Это работает! отлично, я хотел бы спросить вас дальше, нужна ли мне какая-либо помощь!

2. обязательно опубликуйте so и упомяните меня в комментариях, проверьте мой профиль на наличие ссылок

Ответ №2:

Вы можете добавить этот код в свою функцию ** _buildSoftUIMenu **

 Widget _buildSoftUIMenu(icon, color, title) {
  return InkWell(
    onTap: onTapCallback,
    child: Column(
      crossAxisAlignment: CrossAxisAlignment.center,
      children: <Widget>[
        ....
        ....
        ....
      ],
    );
  );
}