创建多个初始路径

时间:2019-11-07 17:23:14

标签: flutter dart

可能真的很简单,但是我试图在主页上创建另一个按钮以遵循另一条路线。

当前只有一个按钮可以将您带到路径X(又名“第一屏幕/主页”),但是我希望另一个按钮可以将您带到路径Y。请问有什么建议吗?

提前加油! (对不起,您仍然无法掌握术语)

void main() {
  runApp(MaterialApp(
   title: 'Named Routes Demo',
initialRoute: '/',
routes: {
  '/': (context) => FirstScreen(),
 '/second': (context) => SecondScreen(),
  '/second/third': (context) => ThirdScreen(),
    },
   )
  );
 }

class FirstScreen extends StatelessWidget {
  @override
   Widget build(BuildContext context) {
   return Scaffold(
  appBar: AppBar(
    title: Text('Home Page'),
  ),
  body: Center(
    child: RaisedButton(
      child: Text('Search'),
       onPressed: () {
           Navigator.pushNamed(context, '/second');
             },
            ),
          ),
        );
      }
    }

  class SecondScreen extends StatelessWidget {
  @override
   Widget build(BuildContext context) {
    return Scaffold(
     appBar: AppBar(
    title: Text('Results Page'),
  ),
  body: Center(
    child: RaisedButton(
      child: Text('Click this result'),
      onPressed: () {
        Navigator.pushNamed(context, '/second/third');
      },
    ),
    ),
  );
}
}

class ThirdScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
return Scaffold(
  appBar: AppBar(
    title: Text("Items Page"),
  ),
  body: Center(
    child: RaisedButton(
          onPressed: () {
        Navigator.pop(context);
      },
      child: Text('This is the item!'),
        ),
      ),
    );
  }
}

1 个答案:

答案 0 :(得分:0)

您可以使用onGenerateRoute参数来代替使用路由

Center(
  child: Column(
    children: [
      RaisedButton(
        child: Text('Button one text'),
        onPressed: () => Navigator.pushNamed(context, '/second'),
      ),
      RaisedButton(
        child: Text('Button two text'),
        onPressed: () => Navigator.pushNamed(context, '/second/third'),
      ),
    ],
  ),
),

您可以将此逻辑更改为使用settings.name所需的任何方式

要在首页上添加另一个按钮,对于此简单代码,您可以使用Column小部件,这是示例

def cambio= {
    def respuesta = [error: 1]
    SecUser user = springSecurityService.currentUser


    if (params?.j_password && params?.password && params?.old_password) {
        String oldPasword=params?.old_password
        String newPassword = params.j_password
        String newPassword2 = params.password

        if    (!springSecurityService.passwordEncoder.isPasswordValid(user.getPassword(), oldPasword, null)) {

            respuesta.error=3
            render respuesta as JSON
        }else if(newPassword == newPassword2) {

        user.setPassword(params.j_password)
        user.save()
        respuesta.error=0
        render respuesta as JSON
      }else
      {
          respuesta.error=2
          render respuesta as JSON
      }

    }else{
    render respuesta as JSON
    }
}`