我的outlinebutton按钮不执行onPressed事件-Flutter

时间:2020-04-22 19:31:52

标签: android flutter

          Stack(
          children: <Widget>[
            Container(
              height: screenHeidth,
              width: screenWidth,
              decoration: BoxDecoration(
                image: DecorationImage(
                  image: AssetImage("assets/fondo1.png"),
                  fit: BoxFit.cover,
                ),
              ),
              child: Padding(
                padding: const EdgeInsets.only(top: 30, right: 20.0),
                child: Align(
                    alignment: Alignment.topRight,
                    child: OutlineButton(
                      padding: EdgeInsets.only(left: 30, right: 30.0),

                      onPressed: () {
                        print("press");
                        Navigator.push(context,
                            MaterialPageRoute(builder: (context) => Safe()));
                      },
                      child: Text(
                        "SALTAR",
                        style: TextStyle(color: Colors.white),
                      ),
                      borderSide: BorderSide(
                          color: Colors.white, style: BorderStyle.solid),
                      shape: StadiumBorder(),
                    )),
              ),
            ),
],
        );

我有点担心,花一些钱来设计这个设计..现在事实证明,我的小按钮不能执行我需要的动作,代码的其他部分在必要时没有放置它可以添加一些设计照片

2 个答案:

答案 0 :(得分:0)

尝试使用命名路线:

在“安全”页面的“ Stless”或“ Stfull”下定义路由名称:

static const routeName = '/your-safe-page';

转到main.dart文件并在MaterialApp(

initialRoute: '/',
      routes: {
        '/': (ctx) => YourHomeScreen(),
        Safe.routeName: (ctx) => Safe(),
        },

再试一次,然后使用此方法重试:

onPressed: () {
              Navigator.of(context).pushNamed(Safe.routeName);
            }

答案 1 :(得分:0)

我无法复制您提到的问题。 onPress事件会正确触发并导航到下一个屏幕。下面的示例工作代码:

return Scaffold(
      backgroundColor: Colors.black,
      body: Stack(
        children: <Widget>[
          Container(
            height: 200,
            width: 200,
            decoration: BoxDecoration(
              image: DecorationImage(
                image: AssetImage("assets/placeholder.png"),
                fit: BoxFit.cover,
              ),
            ),
            child: Padding(
              padding: const EdgeInsets.only(top: 30, right: 20.0),
              child: Align(
                  alignment: Alignment.topRight,
                  child: OutlineButton(
                    padding: EdgeInsets.only(left: 30, right: 30.0),

                    onPressed: () {
                      print("press");
                      Navigator.push(context,
                          MaterialPageRoute(builder: (context) => Safe()));
                    },
                    child: Text(
                      "SALTAR",
                      style: TextStyle(color: Colors.white),
                    ),
                    borderSide: BorderSide(
                        color: Colors.white, style: BorderStyle.solid),
                    shape: StadiumBorder(),
                  )),
            ),
          ),
        ],
      )
    );
  }
}

class Safe extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text('Test'),
      ),
    );
  }
}

它将在控制台中正确打印输出:

I/flutter ( 4357): press
I/flutter ( 4357): press

您可以将您的代码与上面的代码进行比较,并确定代码中缺少的内容。

希望这会有所帮助。