setState() 在我的小部件内部不起作用,因为我的那个小部件构建在小部件树的底部,那么我该如何重建那个小部件?

setState() is not working inside my widget, since my that widget is built on the bottom of the widget tree, then how can I rebuild that widget?

我使用 Navigator.push 导航到下一个屏幕,弹出该屏幕后我无法重建旧屏幕。如果用户按下登录按钮,我还希望我的代码重建

//这是我的有状态Widget

class LoginpageClass extends StatefulWidget {
   @override
   _LoginpageClassState createState() => _LoginpageClassState();
}

class _LoginpageClassState extends State<LoginpageClass> {
  final _auth = FirebaseAuth.instance;

  @override
  Widget build(BuildContext context) {
  return Scaffold(
      body: SingleChildScrollView(child: buildBody(context)),
  );
  } 
 }

//上面调用这个widget

Widget buildBody(BuildContext context) => Container(
  width: double.infinity,
  child: Column(
    crossAxisAlignment: CrossAxisAlignment.center,
    children: [
      buildTopClippers(),
      heightSpacer(20.00),
      buildLogoField(),
      heightSpacer(25.00),
      buildTextField(
        "Username",
        Icons.person,
        false,
        onChangedEmail,
      ),
      heightSpacer(15.00),
      buildTextField("Password", Icons.lock, true, onChangedPassword),
      heightSpacer(25.00),
      buildSignUpText(context),
      heightSpacer(25.00),
      buildLoginContainer(context),
      heightSpacer(20.00),
      buildOtherLogins(context),
      buildBottomClippers()
    ],
  ),
);

//调用上面的buildLoginContainer

  Widget buildLoginContainer(BuildContext context) => Container(
    width: MediaQuery.of(context).size.width,
    height: 65,
    child: Stack(
      children: [
        buildLoginBtn(context),
      ],
    ),
  );

 Widget buildLoginBtn(context) => Positioned(
     right: -100,
     child: FlatButton(
        onPressed: () async {
            print(email);
         try {
            final newUser = await _auth.signInWithEmailAndPassword(
                email: Email, password: Password);
            print(newUser);

            if (newUser != null) {
              Navigator.pushNamed(context, '/');
             }
           } catch (e) {
           print(e);
        
         }
        },
    child: Container(
      width: 350,
      height: 65,
      decoration: BoxDecoration(
        borderRadius: BorderRadius.circular(40.00),
        color: Color.fromRGBO(11, 94, 255, 1),
      ),
      child: buildLoginText(),
    ),
  ),
);

Widget buildLoginText() => Row(
  children: [
    widthSpacer(75.00),
    Text(
      "Login",
      style: TextStyle(color: Colors.white, fontSize: 20.00),
    ),
    widthSpacer(5.5),
    Icon(
      Icons.navigate_next,
      color: Colors.white,
    )
  ],
);

我是开发人员的初学者,因此我不知道如何在此小部件中使用 setState,而且无法通过此小部件访问它。所有小部件都在单独的 dart 文件中创建。

我查看了一些关于继承的小部件用法的文章。怎么可以用在这里??或者其他方法??

在使用 push 时,您正在存储状态,这就是为什么当您返回时,您会发现相同的状态。让我们使用 pushReplacement,也使用 pop 端。