Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2.  
  3. void main()
  4. {
  5. runApp(MaterialApp(
  6. title: 'AndroidMonks',
  7. home: Scaffold(
  8. appBar: AppBar(
  9. title: Text('Androidmonks'),
  10. backgroundColor: Colors.orangeAccent,
  11. ),
  12. body: Home(),
  13. ),
  14. ));
  15. }
  16.  
  17. class Home extends StatefulWidget {
  18. Home({
  19. Key key,
  20. }) : super(key: key);
  21.  
  22. @override
  23. State<Home> createState()=>_Home();
  24. }
  25.  
  26. class _Home extends State<Home> {
  27. String title = "Title";
  28. int _currentIndex = 0;
  29. final List<int> _backstack = [0];
  30.  
  31. @override
  32. Widget build(BuildContext context) {
  33. navigateTo(_currentIndex);
  34. //each fragment is just a widget which we pass the navigate function
  35. List<Widget> _fragments =[Fragment1(),Fragment2(),Fragment3()];
  36. //will pop scope catches the back button presses
  37. return WillPopScope(
  38. onWillPop: () {
  39. customPop(context);
  40. },
  41. child: Scaffold(
  42. body: Column(
  43. children: <Widget>[
  44. RaisedButton(
  45. child:Text('PRESS'),
  46. onPressed: (){
  47. _currentIndex++;
  48. navigateTo(_currentIndex);
  49. },
  50. ),
  51. Expanded(
  52. child: _fragments[_currentIndex],
  53. ),
  54. ],
  55. ),
  56. ),
  57. );
  58. }
  59.  
  60.  
  61. void navigateTo(int index) {
  62. _backstack.add(index);
  63. setState(() {
  64. _currentIndex = index;
  65. });
  66.  
  67. _setTitle('$index');
  68. }
  69.  
  70. void navigateBack(int index) {
  71. setState(() {
  72. _currentIndex = index;
  73. });
  74.  
  75. _setTitle('$index');
  76. }
  77.  
  78. customPop(BuildContext context) {
  79. if (_backstack.length - 1 > 0) {
  80. navigateBack(_backstack[_backstack.length - 1]);
  81. } else {
  82. _backstack.removeAt(_backstack.length - 1);
  83. Navigator.pop(context);
  84. }
  85. }
  86. //this method could be called by the navigate and navigate back methods
  87. _setTitle(String appBarTitle) {
  88. setState(() {
  89. title = appBarTitle;
  90. });
  91. }
  92. }
  93.  
  94. class Fragment2 extends StatefulWidget {
  95. @override
  96. State<Fragment2> createState() => _Fragment2();
  97. }
  98.  
  99. class _Fragment2 extends State<Fragment2> {
  100. @override
  101. Widget build(BuildContext context) {
  102. return Center(
  103. child: RaisedButton(
  104. child: Text("_Fragment2"),
  105. onPressed: (){
  106. }),
  107. );
  108. }
  109. }
  110.  
  111.  
  112. class Fragment1 extends StatefulWidget {
  113. @override
  114. State<Fragment1> createState() => _Fragment1();
  115. }
  116.  
  117. class _Fragment1 extends State<Fragment1> {
  118. @override
  119. Widget build(BuildContext context) {
  120. return Center(
  121. child: Text("_Fragment1"),
  122. );
  123. }
  124. }
  125.  
  126.  
  127. class Fragment3 extends StatefulWidget {
  128. @override
  129. State<Fragment3> createState() => _Fragment3();
  130. }
  131.  
  132. class _Fragment3 extends State<Fragment3> {
  133. @override
  134. Widget build(BuildContext context) {
  135. return Center(
  136. child: Text("_Fragment3"),
  137. );
  138. }
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement