Musa BAL
2 min readSep 24, 2021

--

NAVIGATION – push, pop , pushAndRemoveUntil, popUntil

import ‘package:flutter/material.dart’;

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

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(accentColor: Colors.grey),
home: HomePage(),
);
}
}

class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.yellow,
appBar: AppBar(title: Text(‘Sayfalar Arası Geçiş / Navigation’)),
body: Center(
child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [
Text(‘HomePage’),
RaisedButton(
child: Text(‘Git -> Route Pink’),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder:(context)=> RoutePink() ),
);
})
])),
);
}
}

///////////////////////////////////////////////
/// ROUTE PINK
///////////////////////////////////////////////
class RoutePink extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.pink,
appBar: AppBar(title: Text(‘Route Pink’)),
body: Center(
child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [
Text(‘Şu an RoutePink en üstte’),
RaisedButton(child: Text(‘Git -> Route Green’), onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder:(context)=> RouteGreen() ),
);


}),
RaisedButton(child: Text(‘Geri Dön’), onPressed: () {
Navigator.pop(context);

}),
])),
);
}
}

///////////////////////////////////////////////
/// ROUTE GREEN
///////////////////////////////////////////////
class RouteGreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.green,
appBar: AppBar(title: Text(‘Route Green’)),
body: Center(
child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [
Text(‘Şu an RouteGreen en üstte’),
RaisedButton(child: Text(‘Git -> Route Grey’), onPressed: () {
Navigator.pushAndRemoveUntil(
context, //pushReplacement bu sayfayı kaldırır navigasyonda görünmez
MaterialPageRoute(builder:(context)=> RouteGrey() ), (route) =>false);


}),
RaisedButton(child: Text(‘Geri Dön’), onPressed: () {
Navigator.pop(context); //green kalsın hepsini kaldır. logOut için
}),
])),
);
}
}

///////////////////////////////////////////////
/// ROUTE GREY
///////////////////////////////////////////////
class RouteGrey extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.grey,
appBar: AppBar(title: Text(‘Route Grey’)),
body: Center(
child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [
Text(‘Şu an RouteGrey en üstte’),
RaisedButton(child: Text(‘Git -> ….’), onPressed: () {}),
RaisedButton(child: Text(‘Geri Dön’), onPressed: () {
//Navigator.popUntil(context, (route)=>route.isFirst);
Navigator.popUntil(context, (route)=>route.isFirst);}, //en baştaki sayfaya git
),
])),
);
}
}

--

--