In my flutter app I want to remove in between routes so when the user press back it will go the previous to previous screen. following is my screen flow.
Thanking you in advance.
Just use pushReplacement
instead of push
, when you whant to skip the page at going back
.
import 'dart:math';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter naviagtion',
theme: ThemeData(
backgroundColor: Colors.white,
primarySwatch: Colors.green,
),
home: DashboardLandingScreen(),
);
}
}
class DashboardLandingScreen extends StatelessWidget {
static Route route() => MaterialPageRoute(
builder: (context) => DashboardLandingScreen(),
);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
alignment: Alignment.center,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Dashboard landing screen.'),
RaisedButton(
child: Text('List of Topics'),
onPressed: () => Navigator.of(context).push(
TopicsListScreen.route(),
),
),
],
),
),
);
}
}
class TopicsListScreen extends StatelessWidget {
static Route route() => MaterialPageRoute(
builder: (context) => TopicsListScreen(),
);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
alignment: Alignment.center,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('List of Topics'),
RaisedButton(
child: Text('Create New Topic'),
onPressed: () => Navigator.of(context).push(
NewTopic.route(),
),
),
],
),
),
);
}
}
class NewTopic extends StatelessWidget {
static Route route() => MaterialPageRoute(
builder: (context) => NewTopic(),
);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
alignment: Alignment.center,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('page: new topic'),
RaisedButton(
child: Text('Save'),
onPressed: () => Navigator.of(context).pushReplacement(
CreatedTopicDetails.route(),
),
),
],
),
),
);
}
}
class CreatedTopicDetails extends StatelessWidget {
static Route route() => MaterialPageRoute(
builder: (context) => CreatedTopicDetails(),
);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
alignment: Alignment.center,
child: Text('page: created topic details'),
),
);
}
}