【发布时间】:2019-07-18 00:56:28
【问题描述】:
在我的 Flutter 项目中,我有三个屏幕 - Screen0、Screen1、Screen2。现在,从 screen0 ,我可以通过点击按钮进入 screen1 ,然后从 screen1 我们可以通过一个按钮进入 screen2 。在 screen2 中,我有一个用于返回 screen0 的按钮。由于 Screen0 是初始屏幕,当我回到 Screen0 时,我想清除所有以前的屏幕,并且不希望像此图像中那样有任何后退选项 -
这是我的代码-
main.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 文件中设置了所有路由。然后在 Screen0 中,我有一个按钮可以转到 screen1,如下所示-
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');
},
),
],
),
),
);
}
}
在screen1中,我有一个按钮可以转到screen2-
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();
})
);
},
),
],
),
),
);
}
}
现在,在 screen2 中,我有转到 screen0 的按钮 -
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
但是这个解决方案对我不起作用。
所以,如果有人帮我解决这个问题,那就太好了。
【问题讨论】:
-
pushAndRemoveUntil在什么方面不起作用?