有没有办法在不同的时间以不同的时间显示两个小部件,每次由一个按钮控制?

问题描述 投票:0回答:1

我正在实现一个登录界面,用户无需在页面/路由之间切换以进行注册或登录,但保持相同的页面/路由,但登录和注册的内容会发生变化,因此在点击登录时如何控制登录内容单击注册时注册。

Image to understand: https://i.stack.imgur.com/Fhwdt.png

@override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
          // primarySwatch: Colors.white,
          ),
      home: Scaffold(
        body: Stack(
          fit: StackFit.expand,
          children: <Widget>[
            Container(
              //  height: MediaQuery.of(context).size.height,
              //  width: MediaQuery.of(context).size.width,
              height: 500.0,
              width: 400.0,
              child: Column(
                children: <Widget>[
                  SizedBox(
                    height: 80.0,
                  ),
                  Column(
                    children: <Widget>[
                      CircleAvatar(
                        child: Text("Logo"),
                        backgroundColor: Colors.blue,
                      ),
                      Text("Slogan")
                    ],
                  ),
                  SizedBox(
                    height: 40.0,
                  ),
                  Row(
                    crossAxisAlignment: CrossAxisAlignment.center,
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      RaisedButton(
                        onPressed: () {
                          setState(() {
                            login = true;
                          });
                        },
                        child: Text("SignUp"),
                      ),
                      SizedBox(
                        width: 20.0,
                      ),
                      RaisedButton(
                        onPressed: () {
                          setState(() {
                            login = false;
                          });
                        },
                        child: Text("Login"),
                      )
                    ],
                  ),
                  SizedBox(
                    height: 20.0,
                  ),
                  login ? Signup() : new Login(),
                  // new FragmentB()
                ],
              ),
            )
          ],
        ),
      ),
    );
  }


class Login extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.purple,
    );
  }
}

class Signup extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.blue,
    );
  }
}
dart flutter flutter-layout dart-pub flutter-dependencies
1个回答
1
投票
void main() => runApp(MaterialApp(home: Scaffold(appBar: AppBar(title: Text("Title")), body: HomePage())));

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  bool _isLogin = false;

  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        Expanded(child: _isLogin ? SignupPage() : LoginPage()),
        Center(
          child: RaisedButton(
            child: Text("Switch to ${_isLogin ? "Login" : "Sign up"}"),
            onPressed: () => setState(() => _isLogin = !_isLogin),
          ),
        ),
        Spacer(),
      ],
    );
  }
}

class LoginPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(color: Colors.blue, child: Center(child: Text("Login page")));
  }
}

class SignupPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(color: Colors.teal, child: Center(child: Text("Sign up page")));
  }
}

输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.