Visual Studio 如何给InkWell widget设置动态函数?[duplicate]

1mrurvl1  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(114)

此问题在此处已有答案

Flutter - Argument of type function can't be assigned to the parameter of type void function()(2个答案)
19小时前关门了。
我在Flutter中使用Google和Phone创建了一个FireBase签名,需要两个按钮,因此我创建了一个函数,并在参数中传递了一个函数,以在OnTap上为Inkwell设置,这对于不同的传递函数会有不同的工作方式,但有一个错误。
这是我的按钮小部件

Widget buttonItem(
      String imagepath, String buttonName, double size, Function Tap) {
    return InkWell(
      onTap: Tap, //Here its showing error IDE not allowing
      child: Container(
        width: MediaQuery.of(context).size.width - 60,
        height: 60,
        child: Card(
          color: Colors.black,
          elevation: 8,
          shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(15),
              side: BorderSide(width: 1, color: Colors.grey)),
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              SvgPicture.asset(
                imagepath,
                height: size,
                width: size,
              ),
              SizedBox(
                width: 15,
              ),
              Text(
                buttonName,
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 17,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }

这里是参数传递。

buttonItem("assets/google.svg", "Continue with Google", 25,
                  () async {
                await authClass.googleSignIn(context);
              }),
              SizedBox(
                height: 15,
              ),
              buttonItem("assets/phone.svg", "Continue with Phone", 25, () {}),
              SizedBox(
                height: 15,
              ),

1zmg4dgp

1zmg4dgp1#

buttonItem中没有设置墨水池函数的类型,只需要将类型Function Tap定义为void Function() Tap.即可
那就试试用这个

Widget buttonItem(
  String imagepath, String buttonName, double size, void Function() Tap) {
    return InkWell(
      onTap: Tap, //Here its showing error IDE not allowing
      child: Container(
        width: MediaQuery.of(context).size.width - 60,
        height: 60,
        child: Card(
          color: Colors.black,
          elevation: 8,
          shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(15),
              side: BorderSide(width: 1, color: Colors.grey)),
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              SvgPicture.asset(
                imagepath,
                height: size,
                width: size,
              ),
              SizedBox(
                width: 15,
              ),
              Text(
                buttonName,
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 17,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }

相关问题