gpt4 book ai didi

flutter - 如何从一个屏幕转到另一个屏幕,从堆栈中清除所有以前的屏幕?

转载 作者:IT王子 更新时间:2023-10-29 07:16:56 28 4
gpt4 key购买 nike

在我的 Flutter 项目中,我有三个屏幕 - Screen0、Screen1、Screen2。现在,从 screen0 ,我可以通过单击按钮转到 screen1 ,然后从 screen1 我们可以通过按钮转到 screen2 。在 screen2 中,我有一个用于返回到 screen0 的按钮。由于 Screen0 是初始屏幕,我想在返回到 Screen0 时清除之前的所有屏幕,并且不想像这张图片中那样有任何后退选项 -

enter image description here

这是我的代码-

主.dart

import 'package:flutter/material.dart';
import 'screen0.dart';
import 'screen1.dart';
import 'screen2.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: '/',
routes: {
'/': (context)=> Screen0(),
'/first': (context)=> Screen1(),
'/second': (context)=> Screen2(),
},
);
}
}

我已经在 main.dart 文件中设置了所有路由。然后在屏幕 0 中,我有一个按钮可以转到屏幕 1,如下所示-

screen0.dart

导入 'package:flutter/material.dart';

class Screen0 extends StatelessWidget {
@override
Widget build(BuildContext context) {

return Scaffold(
appBar: AppBar(
backgroundColor: Colors.purple,
title: Text('Screen 0'),
),

body: Center(
child: Column(
children: <Widget>[
RaisedButton(
color: Colors.red,
child: Text('Go to screen 1'),
onPressed: (){
Navigator.pushNamed(context, '/first');
},
),

],
),
),

);
}

}

在屏幕 1 中,我有一个转到屏幕 2 的按钮-

class Screen1 extends StatelessWidget {
@override
Widget build(BuildContext context) {

return Scaffold(
appBar: AppBar(
backgroundColor: Colors.purple,
title: Text('Screen 1'),
),

body: Center(
child: Column(
children: <Widget>[
RaisedButton(
color: Colors.red,
child: Text('Go to screen 2'),
onPressed: (){
Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return Screen2();
})
);
},
),
],
),
),

);
}

}

现在,在屏幕 2 中,我有转到屏幕 0 的按钮 -

class Screen2 extends StatelessWidget {
@override
Widget build(BuildContext context) {

return Scaffold(
appBar: AppBar(
backgroundColor: Colors.purple,
title: Text('Screen 2'),
),

body: Center(
child: Column(
children: <Widget>[
RaisedButton(
color: Colors.red,
child: Text('Go to screen 0'),
onPressed: (){
Navigator.pop(context, Screen2);
Navigator.pushNamed(context, '/');
},
),

],
),
),

);
}

}

我尝试了一些解决方案,例如使用以下链接中给出的 Navigator.pushAndRemoveUntil-

Flutter - Navigate to a new screen, and clear all the previous screens

但是这个解决方案对我不起作用。

所以,如果有人帮我解决这个问题,那就太好了。

最佳答案

使用 pushNamedAndRemoveUntil

例如

Navigator.of(context).pushNamedAndRemoveUntil('/screen4', (Route<dynamic> route) => false);

关于flutter - 如何从一个屏幕转到另一个屏幕,从堆栈中清除所有以前的屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57085723/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com