首页 > 解决方案 > 为什么 ListTile 在单击时不会默认闪现?

问题描述

我已经用 a 填充了我的抽屉,ListTile但是当单击它时,它不会执行默认的飞溅波纹。

这里的代码:

class ItemMenu extends StatelessWidget {
  final bool show;
  final IconData icon;
  final String text;
  final Function onTap;

  ItemMenu(this.show, this.icon, this.text, this.onTap);

  @override
  Widget build(BuildContext context) {
    return ListTile(
      onTap: onTap,
      title: Text(text,
          style: TextStyle(
              fontWeight: FontWeight.w300, fontSize: 20, color: Colors.black)),
      leading: Icon(
        icon,
        color: Colors.black,
      ),
    );
  }
}

我打电话的代码ItemMenupastebin.com/t1MZj6ZM

我的主题未设置为 Colors.transparent。我也试图包装成一个Inkwell但什么都没有。还有什么可能的原因?

在此先感谢您的帮助!

标签: flutterdart

解决方案


更改以下行:

onTap: onTap,

至:

onTap: () => onTap(),

似乎对我有用:

在此处输入图像描述

示例工作代码:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) => MaterialApp(
    home: MyHomePage(),
  );
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context)=> Material(
    child: Center(
      child:ItemMenu(
        true, Icons.edit, "Test", (){ print("hello"); }
      ),
    ),
  );
}


class ItemMenu extends StatelessWidget {
  final bool show;
  final IconData icon;
  final String text;
  final Function onTap;

  ItemMenu(this.show, this.icon, this.text, this.onTap);

  @override
  Widget build(BuildContext context) {
    return ListTile(
      onTap: () => onTap(),
      title: Text(text,
          style: TextStyle(
              fontWeight: FontWeight.w300, fontSize: 20, color: Colors.black)),
      leading: Icon(
        icon,
        color: Colors.black,
      ),
    );
  }
}

推荐阅读