Dart 有没有一种方法可以让两个小部件在同一路线上以不同的方式显示,在不同的时间由一个按钮控制?

Dart 有没有一种方法可以让两个小部件在同一路线上以不同的方式显示,在不同的时间由一个按钮控制?,dart,flutter,flutter-layout,dart-pub,flutter-dependencies,Dart,Flutter,Flutter Layout,Dart Pub,Flutter Dependencies,我正在实现一个登录界面,用户不必在页面/路径之间切换以注册或登录,但页面/路径保持不变,但登录和注册的内容会发生变化,因此如何控制单击登录时的登录内容和单击注册时的注册内容 @覆盖 小部件构建(构建上下文){ 返回材料PP( 主题:主题数据( //主样本:颜色。白色, ), 家:脚手架( 主体:堆栈( fit:StackFit.expand, 儿童:[ 容器( //高度:MediaQuery.of(context).size.height, //宽度:MediaQuery.of(context

我正在实现一个登录界面,用户不必在页面/路径之间切换以注册或登录,但页面/路径保持不变,但登录和注册的内容会发生变化,因此如何控制单击登录时的登录内容和单击注册时的注册内容

@覆盖
小部件构建(构建上下文){
返回材料PP(
主题:主题数据(
//主样本:颜色。白色,
),
家:脚手架(
主体:堆栈(
fit:StackFit.expand,
儿童:[
容器(
//高度:MediaQuery.of(context).size.height,
//宽度:MediaQuery.of(context).size.width,
高度:500.0,
宽度:400.0,
子:列(
儿童:[
大小盒子(
身高:80.0,
),
纵队(
儿童:[
圆形(
子项:文本(“徽标”),
背景颜色:Colors.blue,
),
文本(“口号”)
],
),
大小盒子(
身高:40.0,
),
划船(
crossAxisAlignment:crossAxisAlignment.center,
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
升起的按钮(
已按下:(){
设置状态(){
login=true;
});
},
子项:文本(“注册”),
),
大小盒子(
宽度:20.0,
),
升起的按钮(
已按下:(){
设置状态(){
登录=假;
});
},
子项:文本(“登录”),
)
],
),
大小盒子(
身高:20.0,
),
登录?注册():新登录(),
//新片段b()
],
),
)
],
),
),
);
}
类登录扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回容器(
颜色:颜色,紫色,
);
}
}
类注册扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回容器(
颜色:颜色,蓝色,
);
}
}
void main()=>runApp(MaterialApp(home:Scaffold)(appBar:appBar(title:Text(“title”)),body:HomePage());
类主页扩展了StatefulWidget{
@凌驾
_HomePageState createState()=>\u HomePageState();
}
类_HomePageState扩展状态{
bool_isLogin=false;
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
已展开(子项:_isLogin?SignupPage():LoginPage()),
居中(
孩子:升起按钮(
child:Text(“切换到${u isLogin?”登录名“:“注册”}”),
按下时:()=>设置状态(()=>_isLogin=!_isLogin),
),
),
垫片(),
],
);
}
}
类LoginPage扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回容器(颜色:Colors.blue,子对象:中心(子对象:文本(“登录页”));
}
}
类SignupPage扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回容器(颜色:Colors.teal,子对象:中心(子对象:文本(“注册页”));
}
}
输出:

@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,
    );
  }
}
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")));
  }
}