使用 popUntil 时 Flutter PopScope 无法工作

问题描述 投票:0回答:1
class MainScreen extends StatelessWidget {
  const MainScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return PopScope(
      canPop: false, // false or true
      onPopInvoked: (bool didPop) {
        Navigator.popUntil(
            context, ModalRoute.withName(RouterHelper.logInScreen));
      },
      child: Scaffold(
        backgroundColor: Colors.white,
        appBar: AppBar(
          backgroundColor: Colors.white,
          elevation: 0,
        ),
        body: SafeArea(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              SizedBox(
                width: 312,
                child: 'Main Screeen'.toText(
                  textAlign: TextAlign.center,
                  maxLine: 2,
                  fontSize: 18,
                  fontFamily: poppinsMedium,
                  color:Colors.black,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

当我们使用 canPop false 或 true 时,两者都有相同的情况,即 popUntilonPopInvoked 中不起作用。

我尝试更改 canPop: true,但仍然得到相同的结果,这会导致应用程序崩溃。并且路由没有被反向路由。我还使用 canPop: false 并 write

canPop: false,
onPopInvoked: (bool didPop) {
        Navigator.pop(context);
}

PopScope 中同样导致应用程序崩溃。我无法在 PopScope 中使用 Navigator.popNavigator.popUntil

android flutter dart back
1个回答
2
投票

您可以尝试这个新版本。可能对你有用。

PopScope(
          canPop: false,
          onPopInvoked: (bool didPop) {
            if (didPop) {
              return;
            }
             Navigator.popUntil(context, ModalRoute.withName(RouterHelper.logInScreen));
          },
  ),
© www.soinside.com 2019 - 2024. All rights reserved.