Flutter PopScope 在使用 popUntil 时无法工作

问题描述 投票: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个回答
0
投票

不允许系统后退按钮。

onWillPop: () async {
    Navigator.popUntil(context, ModalRoute.withName(RouterHelper.logInScreen));
    return false; 
  },
© www.soinside.com 2019 - 2024. All rights reserved.