flutter 有一个重复的构造,我把它作为一个方法分开,但是我在按钮部分有问题,你能帮我吗?

2wnc66cl  于 2023-05-23  发布在  Flutter
关注(0)|答案(1)|浏览(90)

我是新来的。有一个重复的构造,我把它作为一个方法分离出来,但是我在按钮部分遇到了问题。你能帮我吗?

TextButton buildSportSection(String sport_screen,String sport_name,String name) {
    return TextButton(
          onPressed: () {
           ** Navigator.push(
                context,
                MaterialPageRoute(
                    builder: (context) =>
                        $sport_screen()));
          },**
          child: Container(
            height: 100,
            decoration: BoxDecoration(
              color: Color(0xFFF7F8F8),
              shape: BoxShape.rectangle,
              borderRadius: BorderRadius.only(
                bottomRight: Radius.circular(50),
                topRight: Radius.circular(50),
              ),
            ),
            child: Row(
              children: [
                Image.asset('assets/images/$name.png'),
                Text("$sport_name",
                    style: GoogleFonts.abhayaLibre(fontSize: 20))
              ],
            ),
          ),
        );
  }
}

这部分的设计方法没有问题,但我无法制作文本按钮部分。

zazmityj

zazmityj1#

可以使用以下代码。你必须以下面的方式传递BuildContext和Widgets,你不必在任何地方使用$ symbol。

TextButton buildSportSection(
  BuildContext context, Widget sportScreen, String sportName, String name) {
return TextButton(
  onPressed: () {
    Navigator.push(
        context, MaterialPageRoute(builder: (context) => sportScreen));
  },
  child: Container(
    height: 100,
    decoration: const BoxDecoration(
      color: Color(0xFFF7F8F8),
      shape: BoxShape.rectangle,
      borderRadius: BorderRadius.only(
        bottomRight: Radius.circular(50),
        topRight: Radius.circular(50),
      ),
    ),
    child: Row(
      children: [
        Image.asset('assets/images/$name.png'),
        Text(
          sportName,
          style: GoogleFonts.abhayaLibre(fontSize: 20),
        )
      ],
    ),
  ),
);

}

相关问题