├── .gitignore
├── .idea
    ├── .gitignore
    ├── codeStyles
    │   └── Project.xml
    ├── libraries
    │   ├── Dart_Packages.xml
    │   ├── Dart_SDK.xml
    │   ├── Flutter_Plugins.xml
    │   ├── Flutter_for_Android.xml
    │   └── KotlinJavaRuntime.xml
    ├── misc.xml
    ├── modules.xml
    └── runConfigurations
    │   └── main_dart.xml
├── .metadata
├── LICENSE
├── LICENSE.md
├── README.md
├── android
    ├── .gitignore
    ├── app
    │   ├── build.gradle
    │   └── src
    │   │   ├── debug
    │   │       └── AndroidManifest.xml
    │   │   ├── main
    │   │       ├── AndroidManifest.xml
    │   │       ├── kotlin
    │   │       │   └── com
    │   │       │   │   └── example
    │   │       │   │       └── pagenavigator
    │   │       │   │           └── MainActivity.kt
    │   │       └── res
    │   │       │   ├── drawable
    │   │       │       └── launch_background.xml
    │   │       │   ├── mipmap-hdpi
    │   │       │       └── ic_launcher.png
    │   │       │   ├── mipmap-mdpi
    │   │       │       └── ic_launcher.png
    │   │       │   ├── mipmap-xhdpi
    │   │       │       └── ic_launcher.png
    │   │       │   ├── mipmap-xxhdpi
    │   │       │       └── ic_launcher.png
    │   │       │   ├── mipmap-xxxhdpi
    │   │       │       └── ic_launcher.png
    │   │       │   └── values
    │   │       │       └── styles.xml
    │   │   └── profile
    │   │       └── AndroidManifest.xml
    ├── build.gradle
    ├── gradle.properties
    ├── gradle
    │   └── wrapper
    │   │   └── gradle-wrapper.properties
    ├── pagenavigator_android.iml
    └── settings.gradle
├── ios
    ├── .gitignore
    ├── Flutter
    │   ├── AppFrameworkInfo.plist
    │   ├── Debug.xcconfig
    │   └── Release.xcconfig
    ├── Runner.xcodeproj
    │   ├── project.pbxproj
    │   ├── project.xcworkspace
    │   │   └── contents.xcworkspacedata
    │   └── xcshareddata
    │   │   └── xcschemes
    │   │       └── Runner.xcscheme
    ├── Runner.xcworkspace
    │   └── contents.xcworkspacedata
    └── Runner
    │   ├── AppDelegate.swift
    │   ├── Assets.xcassets
    │       ├── AppIcon.appiconset
    │       │   ├── Contents.json
    │       │   ├── Icon-App-1024x1024@1x.png
    │       │   ├── Icon-App-20x20@1x.png
    │       │   ├── Icon-App-20x20@2x.png
    │       │   ├── Icon-App-20x20@3x.png
    │       │   ├── Icon-App-29x29@1x.png
    │       │   ├── Icon-App-29x29@2x.png
    │       │   ├── Icon-App-29x29@3x.png
    │       │   ├── Icon-App-40x40@1x.png
    │       │   ├── Icon-App-40x40@2x.png
    │       │   ├── Icon-App-40x40@3x.png
    │       │   ├── Icon-App-60x60@2x.png
    │       │   ├── Icon-App-60x60@3x.png
    │       │   ├── Icon-App-76x76@1x.png
    │       │   ├── Icon-App-76x76@2x.png
    │       │   └── Icon-App-83.5x83.5@2x.png
    │       └── LaunchImage.imageset
    │       │   ├── Contents.json
    │       │   ├── LaunchImage.png
    │       │   ├── LaunchImage@2x.png
    │       │   ├── LaunchImage@3x.png
    │       │   └── README.md
    │   ├── Base.lproj
    │       ├── LaunchScreen.storyboard
    │       └── Main.storyboard
    │   ├── Info.plist
    │   └── Runner-Bridging-Header.h
├── lib
    ├── classes
    │   └── transitions.dart
    ├── main.dart
    └── pages
    │   ├── details.dart
    │   └── home.dart
├── pagenavigator.iml
├── pubspec.yaml
├── readmeassets
    └── navigator-transitions-ios.gif
└── test
    └── widget_test.dart
/.gitignore:
--------------------------------------------------------------------------------
 1 | # See https://www.dartlang.org/guides/libraries/private-files
 2 | 
 3 | # Files and directories created by pub
 4 | .dart_tool/
 5 | .packages
 6 | build/
 7 | # If you're building an application, you may want to check-in your pubspec.lock
 8 | pubspec.lock
 9 | 
10 | # Directory created by dartdoc
11 | # If you don't generate documentation locally you can remove this line.
12 | doc/api/
13 | 
14 | # Avoid committing generated Javascript files:
15 | *.dart.js
16 | *.info.json      # Produced by the --dump-info flag.
17 | *.js             # When generated by dart2js. Don't specify *.js if your
18 |                  # project includes source files written in JavaScript.
19 | *.js_
20 | *.js.deps
21 | *.js.map
22 | 
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /workspace.xml
3 | 
4 | # Project exclude paths
5 | /.
--------------------------------------------------------------------------------
/.idea/codeStyles/Project.xml:
--------------------------------------------------------------------------------
  1 | 
  2 |   
  3 |     
  4 |       
  5 |          
  7 |       
  8 |         
  9 |           
 10 |             
 11 |               
 12 |                 
 13 |                   xmlns:android 
 14 |                   ^$ 
 16 |                  
 17 |                
 18 |              
 19 |            
 20 |           
 21 |             
 22 |               
 23 |                 
 24 |                   xmlns:.* 
 25 |                   ^$ 
 27 |                  
 28 |                
 29 |               BY_NAME 
 30 |              
 31 |            
 32 |           
 33 |             
 34 |               
 35 |                 
 36 |                   .*:id 
 37 |                   http://schemas.android.com/apk/res/android 
 39 |                  
 40 |                
 41 |              
 42 |            
 43 |           
 44 |             
 45 |               
 46 |                 
 47 |                   .*:name 
 48 |                   http://schemas.android.com/apk/res/android 
 50 |                  
 51 |                
 52 |              
 53 |            
 54 |           
 55 |             
 56 |               
 57 |                 
 58 |                   name 
 59 |                   ^$ 
 61 |                  
 62 |                
 63 |              
 64 |            
 65 |           
 66 |             
 67 |               
 68 |                 
 69 |                   style 
 70 |                   ^$ 
 72 |                  
 73 |                
 74 |              
 75 |            
 76 |           
 77 |             
 78 |               
 79 |                 
 80 |                   .* 
 81 |                   ^$ 
 83 |                  
 84 |                
 85 |               BY_NAME 
 86 |              
 87 |            
 88 |           
 89 |             
 90 |               
 91 |                 
 92 |                   .* 
 93 |                   http://schemas.android.com/apk/res/android 
 95 |                  
 96 |                
 97 |               ANDROID_ATTRIBUTE_ORDER 
 98 |              
 99 |            
100 |           
101 |             
102 |               
103 |                 
104 |                   .* 
105 |                   .* 
107 |                  
108 |                
109 |               BY_NAME 
110 |              
111 |            
112 |          
113 |        
114 |      
115 |    
116 |  
--------------------------------------------------------------------------------
/.idea/libraries/Dart_Packages.xml:
--------------------------------------------------------------------------------
  1 | 
  2 |   
  3 |     
  4 |       
  5 |         
  6 |           
  7 |             
  8 |               
10 | 
 11 |          
 12 |         
 13 |           
 14 |             
 15 |               
17 | 
 18 |          
 19 |         
 20 |           
 21 |             
 22 |               
24 | 
 25 |          
 26 |         
 27 |           
 28 |             
 29 |               
31 | 
 32 |          
 33 |         
 34 |           
 35 |             
 36 |               
38 | 
 39 |          
 40 |         
 41 |           
 42 |             
 43 |               
45 | 
 46 |          
 47 |         
 48 |           
 49 |             
 50 |               
52 | 
 53 |          
 54 |         
 55 |           
 56 |             
 57 |               
59 | 
 60 |          
 61 |         
 62 |           
 63 |             
 64 |               
66 | 
 67 |          
 68 |         
 69 |           
 70 |             
 71 |               
73 | 
 74 |          
 75 |         
 76 |           
 77 |             
 78 |               
80 | 
 81 |          
 82 |         
 83 |           
 84 |             
 85 |               
87 | 
 88 |          
 89 |         
 90 |           
 91 |             
 92 |               
94 | 
 95 |          
 96 |         
 97 |           
 98 |             
 99 |               
101 | 
102 |          
103 |         
104 |           
105 |             
106 |               
108 | 
109 |          
110 |         
111 |           
112 |             
113 |               
115 | 
116 |          
117 |         
118 |           
119 |             
120 |               
122 | 
123 |          
124 |         
125 |           
126 |             
127 |               
129 | 
130 |          
131 |         
132 |           
133 |             
134 |               
136 | 
137 |          
138 |         
139 |           
140 |             
141 |               
143 | 
144 |          
145 |         
146 |           
147 |             
148 |               
150 | 
151 |          
152 |         
153 |           
154 |             
155 |               
157 | 
158 |          
159 |         
160 |           
161 |             
162 |               
164 | 
165 |          
166 |         
167 |           
168 |             
169 |               
171 | 
172 |          
173 |         
174 |           
175 |             
176 |               
178 | 
179 |          
180 |         
181 |           
182 |             
183 |               
185 | 
186 |          
187 |         
188 |           
189 |             
190 |               
192 | 
193 |          
194 |         
195 |           
196 |             
197 |               
199 | 
200 |          
201 |        
202 |      
203 |     
204 |        
233 |      
236 |  
--------------------------------------------------------------------------------
/.idea/libraries/Dart_SDK.xml:
--------------------------------------------------------------------------------
 1 | 
 2 |   
 3 |     
 4 |        
16 |      
19 |  
--------------------------------------------------------------------------------
/.idea/libraries/Flutter_Plugins.xml:
--------------------------------------------------------------------------------
1 | 
2 |   
3 |      
7 |  
--------------------------------------------------------------------------------
/.idea/libraries/Flutter_for_Android.xml:
--------------------------------------------------------------------------------
 1 | 
 2 |   
 3 |     
 4 |        
 6 |      
 9 |  
10 | 
--------------------------------------------------------------------------------
/.idea/libraries/KotlinJavaRuntime.xml:
--------------------------------------------------------------------------------
 1 | 
 2 |   
 3 |     
 4 |        
 8 |     
10 |        
14 |    
15 |  
16 | 
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 | 
2 | 
3 |   
4 |      
6 |  
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 |   
 4 |     
 5 |        
 8 |    
 9 |  
10 | 
--------------------------------------------------------------------------------
/.idea/runConfigurations/main_dart.xml:
--------------------------------------------------------------------------------
1 | 
2 |   
3 |      
6 |  
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
 1 | # This file tracks properties of this Flutter project.
 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
 3 | #
 4 | # This file should be version controlled and should not be manually edited.
 5 | 
 6 | version:
 7 |   revision: 0b8abb4724aa590dd0f429683339b1e045a1594d
 8 |   channel: stable
 9 | 
10 | project_type: app
11 | 
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
 1 | MIT License
 2 | 
 3 | Copyright (c) 2020 
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
 1 | Copyright (c) 19-2020 Pixolini, Inc.
 2 | 
 3 | Permission is hereby granted, free of charge, to any person obtaining a copy
 4 | of this software and associated documentation files (the "Software"), to deal
 5 | in the Software without restriction, including without limitation the rights
 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 7 | copies of the Software, and to permit persons to whom the Software is
 8 | furnished to do so, subject to the following conditions:
 9 | 
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 | 
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
  1 | # Page Navigator PageRouteBuilder
  2 | ## Video Tutorial
  3 | [YouTube Video](https://youtu.be/R11g6Seau9k)
  4 | [Blog](https://jedipixels.dev/flutter-navigator-pageroutebuilder-transitions)
  5 | 
  6 | 
  7 | ## Using Navigator and PageRouteBuilder to create custom Transitions
  8 | In this project, you are going to take a look at:
  9 | - How to use the `Navigator` widget to navigate between pages with arguments (pass data)
 10 | - How to use the `Navigator Named Route` with arguments (pass data)
 11 | - How to use the `PageRouteBuilder` to create custom navigation transitions
 12 | 
 13 | ## Navigator
 14 | The `Navigator` widget manages a stack of routes to move between pages. You can optionally pass data to the destination page and back to the original page. To start navigating between pages, you use the `Navigator.of(context).push`, ``pushNamed``, and `pop` methods.
 15 | 
 16 | `Navigator` is incredibly smart; it shows native navigation on iOS or Android. For example, when navigating to a new page, in iOS, the new page slides in from the right, and in Android, it slides in from the bottom.
 17 | 
 18 | ## Navigator Sample Code
 19 | The following example shows you how to use the `Navigator.of(context).push` method to navigate to the `Details` page. The `push` method passes the `Route` arguments. To push a new `Route` argument, you create an instance of the `MaterialPageRoute` class that replaces the screen with the appropriate platform (iOS or Android) animation transition. In the example, the `fullscreenDialog` property is set to `true` to present the `Details` page as a full-screen modal dialog. By setting the `fullscreenDialog` property to `true`, the `Details` page app bar automatically includes a close button. In iOS, the modal dialog transition presents the page by sliding from the bottom of the screen toward the top, and this is also the default for Android.
 20 | 
 21 | ```dart
 22 | Navigator.of(context).push(
 23 |   MaterialPageRoute(
 24 |     fullscreenDialog: true,
 25 |     builder: (context) => Details(),
 26 |   ),
 27 | );
 28 | ```
 29 | 
 30 | The following example shows how to use the `Navigator.of(context).pop` method to close the page and navigate back to the previous page. You call the `Navigator.of(context).pop()` method and the page closes by sliding from the top of the screen toward the bottom.
 31 | 
 32 | 
 33 | ```dart
 34 | // Close page
 35 | Navigator.of(context).pop();
 36 | ```
 37 | 
 38 | The second example shows how to pass a value back to the previous page by passing a result value argument. The result can be a single value, object, lists (arrays) and so on.
 39 | 
 40 | ```dart
 41 | // Close page and pass a value back to previous page
 42 | Navigator.of(context).pop('Done');
 43 | ```
 44 | 
 45 | ## Navigator Named Route
 46 | An alternate way to use `Navigator` is to refer to the page that you are navigating to by the route name. The route name starts with a slash, and then comes the route name. For example, the Details page route name is `'/details'`. The list of routes is built into the `MaterialApp()` widget. The routes have a `Map` of `String` and `WidgetBuilder` where the `String` is the route name, and the `WidgetBuilder` has a builder to build the contents of the route by the Class name (`Details`) of the page to open.
 47 | 
 48 | ```dart
 49 | MaterialApp(
 50 |   initialRoute: '/home',
 51 |   routes: {
 52 |     '/home': (BuildContext context) => Home(),
 53 |     '/details': (BuildContext context) => Details(),
 54 |     '/about': (BuildContext context) => About(),
 55 |   },
 56 | );
 57 | ```
 58 | 
 59 | To call the route, the `Navigator.of(context).pushNamed()` method is called by passing the route name argument.
 60 | 
 61 | ```dart
 62 | Navigator.of(context).pushNamed('/details');
 63 | ```
 64 | 
 65 | 
 66 | You also have an optional second argument to pass data
 67 | 
 68 | ```dart
 69 | // Pass Arguments
 70 | Navigator.of(context).pushNamed(
 71 |     '/details',
 72 |     arguments: {'emotion': 'Happy'}
 73 | );
 74 | ```
 75 | 
 76 | To Extract the arguments (data) you call the `ModalRoute.of(context).settings.arguments` and for this example you access the data by calling the arguments variable key value.
 77 | 
 78 | ```dart
 79 | // Extract Arguments from navigated page
 80 | class _DetailsState extends State {
 81 |   Map arguments = Map();
 82 | 
 83 |   @override
 84 |   void didChangeDependencies() {
 85 |     super.didChangeDependencies();
 86 |     arguments = ModalRoute.of(context).settings.arguments;
 87 |   }
 88 | 
 89 |   @override
 90 |   Widget build(BuildContext context) {
 91 |       return Scaffold(
 92 |        body: Text(arguments['emotion']),
 93 |       );
 94 |   }
 95 | }
 96 | ```
 97 | 
 98 | ## PageRouteBuilder
 99 | The `PageRouteBuilder` class is used to create custom route transitions.
100 | `PageRouteBuilder` provides an `Animation` object. This `Animation` can be used with `Tween` and `Curve` objects to customize the transition animation. 
101 | 
102 | You need to define a `pageBuilder` function to create the route's content and define the `transitionBuilder` function to add transition animation.
103 | 
104 | ```dart
105 | Navigator.of(context).push(
106 |   PageRouteBuilder(
107 |     pageBuilder: (
108 |         BuildContext context, 
109 |         Animation animation, 
110 |         Animation secondaryAnimation) {
111 |       return Details();
112 |     },
113 |     transitionsBuilder: (
114 |         BuildContext context, 
115 |         Animation animation, 
116 |         Animation secondaryAnimation, 
117 |         Widget child) {
118 |       return Align(
119 |         child: SizeTransition(
120 |           sizeFactor: animation,
121 |           child: child,
122 |         ),
123 |       );
124 |     },
125 |     transitionDuration: Duration(milliseconds: 500),
126 |   ),
127 | );
128 | ```
129 | 
130 | ## How it Works
131 | 
132 | ### Navigator 
133 | The `Navigator` widget manages a stack of routes to move between pages. To start navigating between pages, you use the `Navigator.of(context).push`, `pushNamed`, and `pop` methods. You optionally passed data to the navigation page and back to the original page.
134 | 
135 | ### Navigator Named Route
136 | An alternate way to use `Navigator` is to refer to the page that you are navigating to by the route name. The route name starts with a slash, and then comes the route name. To call the route, the `Navigator.of(context).pushNamed()` method is called by passing the route name argument. You also have an optional second argument to pass data. To Extract the arguments (data) you call the `ModalRoute.of(context).settings.arguments`.
137 | 
138 | ### Navigator PageRouteBuilder 
139 | The `PageRouteBuilder` class is used to create custom route transitions.
140 | `PageRouteBuilder` provides an ``Animation`` object. This `Animation` can be used with `Tween` and `Curve` objects to customize the transition animation.
141 | 
142 | ## [License: MIT](LICENSE.md)
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 | 
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
 1 | def localProperties = new Properties()
 2 | def localPropertiesFile = rootProject.file('local.properties')
 3 | if (localPropertiesFile.exists()) {
 4 |     localPropertiesFile.withReader('UTF-8') { reader ->
 5 |         localProperties.load(reader)
 6 |     }
 7 | }
 8 | 
 9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 |     throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 | 
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 |     flutterVersionCode = '1'
17 | }
18 | 
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 |     flutterVersionName = '1.0'
22 | }
23 | 
24 | apply plugin: 'com.android.application'
25 | apply plugin: 'kotlin-android'
26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
27 | 
28 | android {
29 |     compileSdkVersion 28
30 | 
31 |     sourceSets {
32 |         main.java.srcDirs += 'src/main/kotlin'
33 |     }
34 | 
35 |     lintOptions {
36 |         disable 'InvalidPackage'
37 |     }
38 | 
39 |     defaultConfig {
40 |         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
41 |         applicationId "com.example.pagenavigator"
42 |         minSdkVersion 16
43 |         targetSdkVersion 28
44 |         versionCode flutterVersionCode.toInteger()
45 |         versionName flutterVersionName
46 |         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
47 |     }
48 | 
49 |     buildTypes {
50 |         release {
51 |             // TODO: Add your own signing config for the release build.
52 |             // Signing with the debug keys for now, so `flutter run --release` works.
53 |             signingConfig signingConfigs.debug
54 |         }
55 |     }
56 | }
57 | 
58 | flutter {
59 |     source '../..'
60 | }
61 | 
62 | dependencies {
63 |     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
64 |     testImplementation 'junit:junit:4.12'
65 |     androidTestImplementation 'androidx.test:runner:1.1.1'
66 |     androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
67 | }
68 | 
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 | 
3 |     
6 |      
8 | 
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
 1 | 
 3 |     
 8 |     
12 |         
19 |             
20 |                  
23 |          
24 |         
26 |          
30 |  
31 | 
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/example/pagenavigator/MainActivity.kt:
--------------------------------------------------------------------------------
 1 | package com.example.pagenavigator
 2 | 
 3 | import androidx.annotation.NonNull;
 4 | import io.flutter.embedding.android.FlutterActivity
 5 | import io.flutter.embedding.engine.FlutterEngine
 6 | import io.flutter.plugins.GeneratedPluginRegistrant
 7 | 
 8 | class MainActivity: FlutterActivity() {
 9 |     override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
10 |         GeneratedPluginRegistrant.registerWith(flutterEngine);
11 |     }
12 | }
13 | 
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 | 
 4 |     5 | 
 6 |     
 7 |     
12 |
 
13 | 
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 | 
2 | 
3 |     
8 |  
9 | 
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 | 
3 |     
6 |      
8 | 
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
 1 | buildscript {
 2 |     ext.kotlin_version = '1.3.50'
 3 |     repositories {
 4 |         google()
 5 |         jcenter()
 6 |     }
 7 | 
 8 |     dependencies {
 9 |         classpath 'com.android.tools.build:gradle:3.5.0'
10 |         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 |     }
12 | }
13 | 
14 | allprojects {
15 |     repositories {
16 |         google()
17 |         jcenter()
18 |     }
19 | }
20 | 
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 |     project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | }
25 | subprojects {
26 |     project.evaluationDependsOn(':app')
27 | }
28 | 
29 | task clean(type: Delete) {
30 |     delete rootProject.buildDir
31 | }
32 | 
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.enableR8=true
3 | android.useAndroidX=true
4 | android.enableJetifier=true
5 | 
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
7 | 
--------------------------------------------------------------------------------
/android/pagenavigator_android.iml:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 |   
 4 |     
 5 |       
 6 |          
13 |      
14 |    
15 |   
16 |     
18 |        
22 |      
27 |  
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
 1 | include ':app'
 2 | 
 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
 4 | 
 5 | def plugins = new Properties()
 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
 7 | if (pluginsFile.exists()) {
 8 |     pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
 9 | }
10 | 
11 | plugins.each { name, path ->
12 |     def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
13 |     include ":$name"
14 |     project(":$name").projectDir = pluginDirectory
15 | }
16 | 
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
 1 | *.mode1v3
 2 | *.mode2v3
 3 | *.moved-aside
 4 | *.pbxuser
 5 | *.perspectivev3
 6 | **/*sync/
 7 | .sconsign.dblite
 8 | .tags*
 9 | **/.vagrant/
10 | **/DerivedData/
11 | Icon?
12 | **/Pods/
13 | **/.symlinks/
14 | profile
15 | xcuserdata
16 | **/.generated/
17 | Flutter/App.framework
18 | Flutter/Flutter.framework
19 | Flutter/Flutter.podspec
20 | Flutter/Generated.xcconfig
21 | Flutter/app.flx
22 | Flutter/app.zip
23 | Flutter/flutter_assets/
24 | Flutter/flutter_export_environment.sh
25 | ServiceDefinitions.json
26 | Runner/GeneratedPluginRegistrant.*
27 | 
28 | # Exceptions to above rules.
29 | !default.mode1v3
30 | !default.mode2v3
31 | !default.pbxuser
32 | !default.perspectivev3
33 | 
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 | 
 4 | 
 5 |   CFBundleDevelopmentRegion 
 6 |   $(DEVELOPMENT_LANGUAGE) 
 7 |   CFBundleExecutable 
 8 |   App 
 9 |   CFBundleIdentifier 
10 |   io.flutter.flutter.app 
11 |   CFBundleInfoDictionaryVersion 
12 |   6.0 
13 |   CFBundleName 
14 |   App 
15 |   CFBundlePackageType 
16 |   FMWK 
17 |   CFBundleShortVersionString 
18 |   1.0 
19 |   CFBundleSignature 
20 |   ???? 
21 |   CFBundleVersion 
22 |   1.0 
23 |   MinimumOSVersion 
24 |   8.0 
25 |  
26 |  
27 | 
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 | 
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 | 
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
  1 | // !$*UTF8*$!
  2 | {
  3 | 	archiveVersion = 1;
  4 | 	classes = {
  5 | 	};
  6 | 	objectVersion = 46;
  7 | 	objects = {
  8 | 
  9 | /* Begin PBXBuildFile section */
 10 | 		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
 11 | 		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
 12 | 		3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
 13 | 		3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 14 | 		74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
 15 | 		9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
 16 | 		9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 17 | 		97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
 18 | 		97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
 19 | 		97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
 20 | /* End PBXBuildFile section */
 21 | 
 22 | /* Begin PBXCopyFilesBuildPhase section */
 23 | 		9705A1C41CF9048500538489 /* Embed Frameworks */ = {
 24 | 			isa = PBXCopyFilesBuildPhase;
 25 | 			buildActionMask = 2147483647;
 26 | 			dstPath = "";
 27 | 			dstSubfolderSpec = 10;
 28 | 			files = (
 29 | 				3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
 30 | 				9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
 31 | 			);
 32 | 			name = "Embed Frameworks";
 33 | 			runOnlyForDeploymentPostprocessing = 0;
 34 | 		};
 35 | /* End PBXCopyFilesBuildPhase section */
 36 | 
 37 | /* Begin PBXFileReference section */
 38 | 		1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
 39 | 		1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
 40 | 		3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
 41 | 		3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; };
 42 | 		74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
 43 | 		74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
 44 | 		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
 45 | 		9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
 46 | 		9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
 47 | 		9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; };
 48 | 		97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
 49 | 		97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
 50 | 		97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
 51 | 		97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
 52 | 		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
 53 | /* End PBXFileReference section */
 54 | 
 55 | /* Begin PBXFrameworksBuildPhase section */
 56 | 		97C146EB1CF9000F007C117D /* Frameworks */ = {
 57 | 			isa = PBXFrameworksBuildPhase;
 58 | 			buildActionMask = 2147483647;
 59 | 			files = (
 60 | 				9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
 61 | 				3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
 62 | 			);
 63 | 			runOnlyForDeploymentPostprocessing = 0;
 64 | 		};
 65 | /* End PBXFrameworksBuildPhase section */
 66 | 
 67 | /* Begin PBXGroup section */
 68 | 		9740EEB11CF90186004384FC /* Flutter */ = {
 69 | 			isa = PBXGroup;
 70 | 			children = (
 71 | 				3B80C3931E831B6300D905FE /* App.framework */,
 72 | 				3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
 73 | 				9740EEBA1CF902C7004384FC /* Flutter.framework */,
 74 | 				9740EEB21CF90195004384FC /* Debug.xcconfig */,
 75 | 				7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
 76 | 				9740EEB31CF90195004384FC /* Generated.xcconfig */,
 77 | 			);
 78 | 			name = Flutter;
 79 | 			sourceTree = "";
 80 | 		};
 81 | 		97C146E51CF9000F007C117D = {
 82 | 			isa = PBXGroup;
 83 | 			children = (
 84 | 				9740EEB11CF90186004384FC /* Flutter */,
 85 | 				97C146F01CF9000F007C117D /* Runner */,
 86 | 				97C146EF1CF9000F007C117D /* Products */,
 87 | 			);
 88 | 			sourceTree = "";
 89 | 		};
 90 | 		97C146EF1CF9000F007C117D /* Products */ = {
 91 | 			isa = PBXGroup;
 92 | 			children = (
 93 | 				97C146EE1CF9000F007C117D /* Runner.app */,
 94 | 			);
 95 | 			name = Products;
 96 | 			sourceTree = "";
 97 | 		};
 98 | 		97C146F01CF9000F007C117D /* Runner */ = {
 99 | 			isa = PBXGroup;
100 | 			children = (
101 | 				97C146FA1CF9000F007C117D /* Main.storyboard */,
102 | 				97C146FD1CF9000F007C117D /* Assets.xcassets */,
103 | 				97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
104 | 				97C147021CF9000F007C117D /* Info.plist */,
105 | 				97C146F11CF9000F007C117D /* Supporting Files */,
106 | 				1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
107 | 				1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
108 | 				74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
109 | 				74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
110 | 			);
111 | 			path = Runner;
112 | 			sourceTree = "";
113 | 		};
114 | 		97C146F11CF9000F007C117D /* Supporting Files */ = {
115 | 			isa = PBXGroup;
116 | 			children = (
117 | 			);
118 | 			name = "Supporting Files";
119 | 			sourceTree = "";
120 | 		};
121 | /* End PBXGroup section */
122 | 
123 | /* Begin PBXNativeTarget section */
124 | 		97C146ED1CF9000F007C117D /* Runner */ = {
125 | 			isa = PBXNativeTarget;
126 | 			buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
127 | 			buildPhases = (
128 | 				9740EEB61CF901F6004384FC /* Run Script */,
129 | 				97C146EA1CF9000F007C117D /* Sources */,
130 | 				97C146EB1CF9000F007C117D /* Frameworks */,
131 | 				97C146EC1CF9000F007C117D /* Resources */,
132 | 				9705A1C41CF9048500538489 /* Embed Frameworks */,
133 | 				3B06AD1E1E4923F5004D2608 /* Thin Binary */,
134 | 			);
135 | 			buildRules = (
136 | 			);
137 | 			dependencies = (
138 | 			);
139 | 			name = Runner;
140 | 			productName = Runner;
141 | 			productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
142 | 			productType = "com.apple.product-type.application";
143 | 		};
144 | /* End PBXNativeTarget section */
145 | 
146 | /* Begin PBXProject section */
147 | 		97C146E61CF9000F007C117D /* Project object */ = {
148 | 			isa = PBXProject;
149 | 			attributes = {
150 | 				LastUpgradeCheck = 1020;
151 | 				ORGANIZATIONNAME = "The Chromium Authors";
152 | 				TargetAttributes = {
153 | 					97C146ED1CF9000F007C117D = {
154 | 						CreatedOnToolsVersion = 7.3.1;
155 | 						LastSwiftMigration = 1100;
156 | 					};
157 | 				};
158 | 			};
159 | 			buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
160 | 			compatibilityVersion = "Xcode 3.2";
161 | 			developmentRegion = en;
162 | 			hasScannedForEncodings = 0;
163 | 			knownRegions = (
164 | 				en,
165 | 				Base,
166 | 			);
167 | 			mainGroup = 97C146E51CF9000F007C117D;
168 | 			productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
169 | 			projectDirPath = "";
170 | 			projectRoot = "";
171 | 			targets = (
172 | 				97C146ED1CF9000F007C117D /* Runner */,
173 | 			);
174 | 		};
175 | /* End PBXProject section */
176 | 
177 | /* Begin PBXResourcesBuildPhase section */
178 | 		97C146EC1CF9000F007C117D /* Resources */ = {
179 | 			isa = PBXResourcesBuildPhase;
180 | 			buildActionMask = 2147483647;
181 | 			files = (
182 | 				97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
183 | 				3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
184 | 				97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
185 | 				97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
186 | 			);
187 | 			runOnlyForDeploymentPostprocessing = 0;
188 | 		};
189 | /* End PBXResourcesBuildPhase section */
190 | 
191 | /* Begin PBXShellScriptBuildPhase section */
192 | 		3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
193 | 			isa = PBXShellScriptBuildPhase;
194 | 			buildActionMask = 2147483647;
195 | 			files = (
196 | 			);
197 | 			inputPaths = (
198 | 			);
199 | 			name = "Thin Binary";
200 | 			outputPaths = (
201 | 			);
202 | 			runOnlyForDeploymentPostprocessing = 0;
203 | 			shellPath = /bin/sh;
204 | 			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
205 | 		};
206 | 		9740EEB61CF901F6004384FC /* Run Script */ = {
207 | 			isa = PBXShellScriptBuildPhase;
208 | 			buildActionMask = 2147483647;
209 | 			files = (
210 | 			);
211 | 			inputPaths = (
212 | 			);
213 | 			name = "Run Script";
214 | 			outputPaths = (
215 | 			);
216 | 			runOnlyForDeploymentPostprocessing = 0;
217 | 			shellPath = /bin/sh;
218 | 			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
219 | 		};
220 | /* End PBXShellScriptBuildPhase section */
221 | 
222 | /* Begin PBXSourcesBuildPhase section */
223 | 		97C146EA1CF9000F007C117D /* Sources */ = {
224 | 			isa = PBXSourcesBuildPhase;
225 | 			buildActionMask = 2147483647;
226 | 			files = (
227 | 				74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
228 | 				1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
229 | 			);
230 | 			runOnlyForDeploymentPostprocessing = 0;
231 | 		};
232 | /* End PBXSourcesBuildPhase section */
233 | 
234 | /* Begin PBXVariantGroup section */
235 | 		97C146FA1CF9000F007C117D /* Main.storyboard */ = {
236 | 			isa = PBXVariantGroup;
237 | 			children = (
238 | 				97C146FB1CF9000F007C117D /* Base */,
239 | 			);
240 | 			name = Main.storyboard;
241 | 			sourceTree = "";
242 | 		};
243 | 		97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
244 | 			isa = PBXVariantGroup;
245 | 			children = (
246 | 				97C147001CF9000F007C117D /* Base */,
247 | 			);
248 | 			name = LaunchScreen.storyboard;
249 | 			sourceTree = "";
250 | 		};
251 | /* End PBXVariantGroup section */
252 | 
253 | /* Begin XCBuildConfiguration section */
254 | 		249021D3217E4FDB00AE95B9 /* Profile */ = {
255 | 			isa = XCBuildConfiguration;
256 | 			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
257 | 			buildSettings = {
258 | 				ALWAYS_SEARCH_USER_PATHS = NO;
259 | 				CLANG_ANALYZER_NONNULL = YES;
260 | 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
261 | 				CLANG_CXX_LIBRARY = "libc++";
262 | 				CLANG_ENABLE_MODULES = YES;
263 | 				CLANG_ENABLE_OBJC_ARC = YES;
264 | 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
265 | 				CLANG_WARN_BOOL_CONVERSION = YES;
266 | 				CLANG_WARN_COMMA = YES;
267 | 				CLANG_WARN_CONSTANT_CONVERSION = YES;
268 | 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
269 | 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
270 | 				CLANG_WARN_EMPTY_BODY = YES;
271 | 				CLANG_WARN_ENUM_CONVERSION = YES;
272 | 				CLANG_WARN_INFINITE_RECURSION = YES;
273 | 				CLANG_WARN_INT_CONVERSION = YES;
274 | 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
275 | 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
276 | 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
277 | 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
278 | 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
279 | 				CLANG_WARN_STRICT_PROTOTYPES = YES;
280 | 				CLANG_WARN_SUSPICIOUS_MOVE = YES;
281 | 				CLANG_WARN_UNREACHABLE_CODE = YES;
282 | 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
283 | 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
284 | 				COPY_PHASE_STRIP = NO;
285 | 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
286 | 				ENABLE_NS_ASSERTIONS = NO;
287 | 				ENABLE_STRICT_OBJC_MSGSEND = YES;
288 | 				GCC_C_LANGUAGE_STANDARD = gnu99;
289 | 				GCC_NO_COMMON_BLOCKS = YES;
290 | 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
291 | 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
292 | 				GCC_WARN_UNDECLARED_SELECTOR = YES;
293 | 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
294 | 				GCC_WARN_UNUSED_FUNCTION = YES;
295 | 				GCC_WARN_UNUSED_VARIABLE = YES;
296 | 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
297 | 				MTL_ENABLE_DEBUG_INFO = NO;
298 | 				SDKROOT = iphoneos;
299 | 				SUPPORTED_PLATFORMS = iphoneos;
300 | 				TARGETED_DEVICE_FAMILY = "1,2";
301 | 				VALIDATE_PRODUCT = YES;
302 | 			};
303 | 			name = Profile;
304 | 		};
305 | 		249021D4217E4FDB00AE95B9 /* Profile */ = {
306 | 			isa = XCBuildConfiguration;
307 | 			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
308 | 			buildSettings = {
309 | 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
310 | 				CLANG_ENABLE_MODULES = YES;
311 | 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
312 | 				ENABLE_BITCODE = NO;
313 | 				FRAMEWORK_SEARCH_PATHS = (
314 | 					"$(inherited)",
315 | 					"$(PROJECT_DIR)/Flutter",
316 | 				);
317 | 				INFOPLIST_FILE = Runner/Info.plist;
318 | 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
319 | 				LIBRARY_SEARCH_PATHS = (
320 | 					"$(inherited)",
321 | 					"$(PROJECT_DIR)/Flutter",
322 | 				);
323 | 				PRODUCT_BUNDLE_IDENTIFIER = com.example.pagenavigator;
324 | 				PRODUCT_NAME = "$(TARGET_NAME)";
325 | 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
326 | 				SWIFT_VERSION = 5.0;
327 | 				VERSIONING_SYSTEM = "apple-generic";
328 | 			};
329 | 			name = Profile;
330 | 		};
331 | 		97C147031CF9000F007C117D /* Debug */ = {
332 | 			isa = XCBuildConfiguration;
333 | 			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
334 | 			buildSettings = {
335 | 				ALWAYS_SEARCH_USER_PATHS = NO;
336 | 				CLANG_ANALYZER_NONNULL = YES;
337 | 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
338 | 				CLANG_CXX_LIBRARY = "libc++";
339 | 				CLANG_ENABLE_MODULES = YES;
340 | 				CLANG_ENABLE_OBJC_ARC = YES;
341 | 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
342 | 				CLANG_WARN_BOOL_CONVERSION = YES;
343 | 				CLANG_WARN_COMMA = YES;
344 | 				CLANG_WARN_CONSTANT_CONVERSION = YES;
345 | 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
346 | 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
347 | 				CLANG_WARN_EMPTY_BODY = YES;
348 | 				CLANG_WARN_ENUM_CONVERSION = YES;
349 | 				CLANG_WARN_INFINITE_RECURSION = YES;
350 | 				CLANG_WARN_INT_CONVERSION = YES;
351 | 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
352 | 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
353 | 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
354 | 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
355 | 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
356 | 				CLANG_WARN_STRICT_PROTOTYPES = YES;
357 | 				CLANG_WARN_SUSPICIOUS_MOVE = YES;
358 | 				CLANG_WARN_UNREACHABLE_CODE = YES;
359 | 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
360 | 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
361 | 				COPY_PHASE_STRIP = NO;
362 | 				DEBUG_INFORMATION_FORMAT = dwarf;
363 | 				ENABLE_STRICT_OBJC_MSGSEND = YES;
364 | 				ENABLE_TESTABILITY = YES;
365 | 				GCC_C_LANGUAGE_STANDARD = gnu99;
366 | 				GCC_DYNAMIC_NO_PIC = NO;
367 | 				GCC_NO_COMMON_BLOCKS = YES;
368 | 				GCC_OPTIMIZATION_LEVEL = 0;
369 | 				GCC_PREPROCESSOR_DEFINITIONS = (
370 | 					"DEBUG=1",
371 | 					"$(inherited)",
372 | 				);
373 | 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
374 | 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
375 | 				GCC_WARN_UNDECLARED_SELECTOR = YES;
376 | 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
377 | 				GCC_WARN_UNUSED_FUNCTION = YES;
378 | 				GCC_WARN_UNUSED_VARIABLE = YES;
379 | 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
380 | 				MTL_ENABLE_DEBUG_INFO = YES;
381 | 				ONLY_ACTIVE_ARCH = YES;
382 | 				SDKROOT = iphoneos;
383 | 				TARGETED_DEVICE_FAMILY = "1,2";
384 | 			};
385 | 			name = Debug;
386 | 		};
387 | 		97C147041CF9000F007C117D /* Release */ = {
388 | 			isa = XCBuildConfiguration;
389 | 			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
390 | 			buildSettings = {
391 | 				ALWAYS_SEARCH_USER_PATHS = NO;
392 | 				CLANG_ANALYZER_NONNULL = YES;
393 | 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
394 | 				CLANG_CXX_LIBRARY = "libc++";
395 | 				CLANG_ENABLE_MODULES = YES;
396 | 				CLANG_ENABLE_OBJC_ARC = YES;
397 | 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
398 | 				CLANG_WARN_BOOL_CONVERSION = YES;
399 | 				CLANG_WARN_COMMA = YES;
400 | 				CLANG_WARN_CONSTANT_CONVERSION = YES;
401 | 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
402 | 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
403 | 				CLANG_WARN_EMPTY_BODY = YES;
404 | 				CLANG_WARN_ENUM_CONVERSION = YES;
405 | 				CLANG_WARN_INFINITE_RECURSION = YES;
406 | 				CLANG_WARN_INT_CONVERSION = YES;
407 | 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
408 | 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
409 | 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
410 | 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
411 | 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
412 | 				CLANG_WARN_STRICT_PROTOTYPES = YES;
413 | 				CLANG_WARN_SUSPICIOUS_MOVE = YES;
414 | 				CLANG_WARN_UNREACHABLE_CODE = YES;
415 | 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
416 | 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
417 | 				COPY_PHASE_STRIP = NO;
418 | 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
419 | 				ENABLE_NS_ASSERTIONS = NO;
420 | 				ENABLE_STRICT_OBJC_MSGSEND = YES;
421 | 				GCC_C_LANGUAGE_STANDARD = gnu99;
422 | 				GCC_NO_COMMON_BLOCKS = YES;
423 | 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
424 | 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
425 | 				GCC_WARN_UNDECLARED_SELECTOR = YES;
426 | 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
427 | 				GCC_WARN_UNUSED_FUNCTION = YES;
428 | 				GCC_WARN_UNUSED_VARIABLE = YES;
429 | 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
430 | 				MTL_ENABLE_DEBUG_INFO = NO;
431 | 				SDKROOT = iphoneos;
432 | 				SUPPORTED_PLATFORMS = iphoneos;
433 | 				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
434 | 				TARGETED_DEVICE_FAMILY = "1,2";
435 | 				VALIDATE_PRODUCT = YES;
436 | 			};
437 | 			name = Release;
438 | 		};
439 | 		97C147061CF9000F007C117D /* Debug */ = {
440 | 			isa = XCBuildConfiguration;
441 | 			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
442 | 			buildSettings = {
443 | 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
444 | 				CLANG_ENABLE_MODULES = YES;
445 | 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
446 | 				ENABLE_BITCODE = NO;
447 | 				FRAMEWORK_SEARCH_PATHS = (
448 | 					"$(inherited)",
449 | 					"$(PROJECT_DIR)/Flutter",
450 | 				);
451 | 				INFOPLIST_FILE = Runner/Info.plist;
452 | 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
453 | 				LIBRARY_SEARCH_PATHS = (
454 | 					"$(inherited)",
455 | 					"$(PROJECT_DIR)/Flutter",
456 | 				);
457 | 				PRODUCT_BUNDLE_IDENTIFIER = com.example.pagenavigator;
458 | 				PRODUCT_NAME = "$(TARGET_NAME)";
459 | 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
460 | 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
461 | 				SWIFT_VERSION = 5.0;
462 | 				VERSIONING_SYSTEM = "apple-generic";
463 | 			};
464 | 			name = Debug;
465 | 		};
466 | 		97C147071CF9000F007C117D /* Release */ = {
467 | 			isa = XCBuildConfiguration;
468 | 			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
469 | 			buildSettings = {
470 | 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
471 | 				CLANG_ENABLE_MODULES = YES;
472 | 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
473 | 				ENABLE_BITCODE = NO;
474 | 				FRAMEWORK_SEARCH_PATHS = (
475 | 					"$(inherited)",
476 | 					"$(PROJECT_DIR)/Flutter",
477 | 				);
478 | 				INFOPLIST_FILE = Runner/Info.plist;
479 | 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
480 | 				LIBRARY_SEARCH_PATHS = (
481 | 					"$(inherited)",
482 | 					"$(PROJECT_DIR)/Flutter",
483 | 				);
484 | 				PRODUCT_BUNDLE_IDENTIFIER = com.example.pagenavigator;
485 | 				PRODUCT_NAME = "$(TARGET_NAME)";
486 | 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
487 | 				SWIFT_VERSION = 5.0;
488 | 				VERSIONING_SYSTEM = "apple-generic";
489 | 			};
490 | 			name = Release;
491 | 		};
492 | /* End XCBuildConfiguration section */
493 | 
494 | /* Begin XCConfigurationList section */
495 | 		97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
496 | 			isa = XCConfigurationList;
497 | 			buildConfigurations = (
498 | 				97C147031CF9000F007C117D /* Debug */,
499 | 				97C147041CF9000F007C117D /* Release */,
500 | 				249021D3217E4FDB00AE95B9 /* Profile */,
501 | 			);
502 | 			defaultConfigurationIsVisible = 0;
503 | 			defaultConfigurationName = Release;
504 | 		};
505 | 		97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
506 | 			isa = XCConfigurationList;
507 | 			buildConfigurations = (
508 | 				97C147061CF9000F007C117D /* Debug */,
509 | 				97C147071CF9000F007C117D /* Release */,
510 | 				249021D4217E4FDB00AE95B9 /* Profile */,
511 | 			);
512 | 			defaultConfigurationIsVisible = 0;
513 | 			defaultConfigurationName = Release;
514 | 		};
515 | /* End XCConfigurationList section */
516 | 	};
517 | 	rootObject = 97C146E61CF9000F007C117D /* Project object */;
518 | }
519 | 
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 | 
2 | 
4 |    
6 |     
7 |  
8 | 
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 5 |    
 8 |       
 9 |          
15 |             
21 |              
22 |           
23 |        
24 |     
25 |    
30 |       
31 |        
32 |       
33 |          
39 |           
40 |        
41 |       
42 |        
43 |     
44 |    
54 |       
56 |          
62 |           
63 |        
64 |       
65 |        
66 |     
67 |    
73 |       
75 |          
81 |           
82 |        
83 |     
84 |    
86 |     
87 |    
90 |     
91 |  
92 | 
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 | 
2 | 
4 |    
6 |     
7 |  
8 | 
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
 1 | import UIKit
 2 | import Flutter
 3 | 
 4 | @UIApplicationMain
 5 | @objc class AppDelegate: FlutterAppDelegate {
 6 |   override func application(
 7 |     _ application: UIApplication,
 8 |     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
 9 |   ) -> Bool {
10 |     GeneratedPluginRegistrant.register(with: self)
11 |     return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 |   }
13 | }
14 | 
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
  1 | {
  2 |   "images" : [
  3 |     {
  4 |       "size" : "20x20",
  5 |       "idiom" : "iphone",
  6 |       "filename" : "Icon-App-20x20@2x.png",
  7 |       "scale" : "2x"
  8 |     },
  9 |     {
 10 |       "size" : "20x20",
 11 |       "idiom" : "iphone",
 12 |       "filename" : "Icon-App-20x20@3x.png",
 13 |       "scale" : "3x"
 14 |     },
 15 |     {
 16 |       "size" : "29x29",
 17 |       "idiom" : "iphone",
 18 |       "filename" : "Icon-App-29x29@1x.png",
 19 |       "scale" : "1x"
 20 |     },
 21 |     {
 22 |       "size" : "29x29",
 23 |       "idiom" : "iphone",
 24 |       "filename" : "Icon-App-29x29@2x.png",
 25 |       "scale" : "2x"
 26 |     },
 27 |     {
 28 |       "size" : "29x29",
 29 |       "idiom" : "iphone",
 30 |       "filename" : "Icon-App-29x29@3x.png",
 31 |       "scale" : "3x"
 32 |     },
 33 |     {
 34 |       "size" : "40x40",
 35 |       "idiom" : "iphone",
 36 |       "filename" : "Icon-App-40x40@2x.png",
 37 |       "scale" : "2x"
 38 |     },
 39 |     {
 40 |       "size" : "40x40",
 41 |       "idiom" : "iphone",
 42 |       "filename" : "Icon-App-40x40@3x.png",
 43 |       "scale" : "3x"
 44 |     },
 45 |     {
 46 |       "size" : "60x60",
 47 |       "idiom" : "iphone",
 48 |       "filename" : "Icon-App-60x60@2x.png",
 49 |       "scale" : "2x"
 50 |     },
 51 |     {
 52 |       "size" : "60x60",
 53 |       "idiom" : "iphone",
 54 |       "filename" : "Icon-App-60x60@3x.png",
 55 |       "scale" : "3x"
 56 |     },
 57 |     {
 58 |       "size" : "20x20",
 59 |       "idiom" : "ipad",
 60 |       "filename" : "Icon-App-20x20@1x.png",
 61 |       "scale" : "1x"
 62 |     },
 63 |     {
 64 |       "size" : "20x20",
 65 |       "idiom" : "ipad",
 66 |       "filename" : "Icon-App-20x20@2x.png",
 67 |       "scale" : "2x"
 68 |     },
 69 |     {
 70 |       "size" : "29x29",
 71 |       "idiom" : "ipad",
 72 |       "filename" : "Icon-App-29x29@1x.png",
 73 |       "scale" : "1x"
 74 |     },
 75 |     {
 76 |       "size" : "29x29",
 77 |       "idiom" : "ipad",
 78 |       "filename" : "Icon-App-29x29@2x.png",
 79 |       "scale" : "2x"
 80 |     },
 81 |     {
 82 |       "size" : "40x40",
 83 |       "idiom" : "ipad",
 84 |       "filename" : "Icon-App-40x40@1x.png",
 85 |       "scale" : "1x"
 86 |     },
 87 |     {
 88 |       "size" : "40x40",
 89 |       "idiom" : "ipad",
 90 |       "filename" : "Icon-App-40x40@2x.png",
 91 |       "scale" : "2x"
 92 |     },
 93 |     {
 94 |       "size" : "76x76",
 95 |       "idiom" : "ipad",
 96 |       "filename" : "Icon-App-76x76@1x.png",
 97 |       "scale" : "1x"
 98 |     },
 99 |     {
100 |       "size" : "76x76",
101 |       "idiom" : "ipad",
102 |       "filename" : "Icon-App-76x76@2x.png",
103 |       "scale" : "2x"
104 |     },
105 |     {
106 |       "size" : "83.5x83.5",
107 |       "idiom" : "ipad",
108 |       "filename" : "Icon-App-83.5x83.5@2x.png",
109 |       "scale" : "2x"
110 |     },
111 |     {
112 |       "size" : "1024x1024",
113 |       "idiom" : "ios-marketing",
114 |       "filename" : "Icon-App-1024x1024@1x.png",
115 |       "scale" : "1x"
116 |     }
117 |   ],
118 |   "info" : {
119 |     "version" : 1,
120 |     "author" : "xcode"
121 |   }
122 | }
123 | 
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "images" : [
 3 |     {
 4 |       "idiom" : "universal",
 5 |       "filename" : "LaunchImage.png",
 6 |       "scale" : "1x"
 7 |     },
 8 |     {
 9 |       "idiom" : "universal",
10 |       "filename" : "LaunchImage@2x.png",
11 |       "scale" : "2x"
12 |     },
13 |     {
14 |       "idiom" : "universal",
15 |       "filename" : "LaunchImage@3x.png",
16 |       "scale" : "3x"
17 |     }
18 |   ],
19 |   "info" : {
20 |     "version" : 1,
21 |     "author" : "xcode"
22 |   }
23 | }
24 | 
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 | 
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 | 
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 |     
 4 |          
 7 |     
 8 |         
 9 |         
10 |             
11 |                 
12 |                     
13 |                          
16 |                     
17 |                         
19 |                             
20 |                              
21 |                          
22 |                         
24 |                              
27 |                      
28 |                  
29 |                  
31 |              
33 |      
34 |     
35 |          
37 |  
38 | 
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 |     
 4 |          
 7 |     
 8 |         
 9 |         
10 |             
11 |                 
12 |                     
13 |                          
16 |                     
17 |                          
21 |                  
22 |                  
24 |          
25 |      
26 |  
27 | 
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 | 
 4 | 
 5 | 	CFBundleDevelopmentRegion 
 6 | 	$(DEVELOPMENT_LANGUAGE) 
 7 | 	CFBundleExecutable 
 8 | 	$(EXECUTABLE_NAME) 
 9 | 	CFBundleIdentifier 
10 | 	$(PRODUCT_BUNDLE_IDENTIFIER) 
11 | 	CFBundleInfoDictionaryVersion 
12 | 	6.0 
13 | 	CFBundleName 
14 | 	pagenavigator 
15 | 	CFBundlePackageType 
16 | 	APPL 
17 | 	CFBundleShortVersionString 
18 | 	$(FLUTTER_BUILD_NAME) 
19 | 	CFBundleSignature 
20 | 	???? 
21 | 	CFBundleVersion 
22 | 	$(FLUTTER_BUILD_NUMBER) 
23 | 	LSRequiresIPhoneOS 
24 | 	UILaunchStoryboardName 
26 | 	LaunchScreen 
27 | 	UIMainStoryboardFile 
28 | 	Main 
29 | 	UISupportedInterfaceOrientations 
30 | 	
31 | 		UIInterfaceOrientationPortrait 
32 | 		UIInterfaceOrientationLandscapeLeft 
33 | 		UIInterfaceOrientationLandscapeRight 
34 | 	 
35 | 	UISupportedInterfaceOrientations~ipad 
36 | 	
37 | 		UIInterfaceOrientationPortrait 
38 | 		UIInterfaceOrientationPortraitUpsideDown 
39 | 		UIInterfaceOrientationLandscapeLeft 
40 | 		UIInterfaceOrientationLandscapeRight 
41 | 	 
42 | 	UIViewControllerBasedStatusBarAppearance 
43 | 	 
45 |  
46 | 
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
--------------------------------------------------------------------------------
/lib/classes/transitions.dart:
--------------------------------------------------------------------------------
  1 | import 'package:flutter/material.dart';
  2 | 
  3 | // Enumeration is used to define named constant values
  4 | enum TransitionType {
  5 |   defaultTransition,
  6 |   none,
  7 |   size,
  8 |   scale,
  9 |   fade,
 10 |   rotate,
 11 |   slideDown,
 12 |   slideUp,
 13 |   slideLeft,
 14 |   slideRight
 15 | }
 16 | 
 17 | class Transitions extends PageRouteBuilder {
 18 |   final TransitionType transitionType;
 19 |   final Curve curve;
 20 |   final Curve reverseCurve;
 21 |   final Duration duration;
 22 |   final Widget widget;
 23 | 
 24 |   Transitions({
 25 |     this.transitionType,
 26 |     this.curve = Curves.elasticInOut,
 27 |     this.reverseCurve = Curves.easeOut,
 28 |     this.duration = const Duration(milliseconds: 500),
 29 |     this.widget}) : super(
 30 |     transitionDuration: duration,
 31 |     pageBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation) {
 32 |       return widget;
 33 |     },
 34 |     transitionsBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) {
 35 |       //animation = CurvedAnimation(parent: animation, curve: curve, reverseCurve: reverseCurve);
 36 | 
 37 |       switch (transitionType) {
 38 |         case TransitionType.none:
 39 |           return child;
 40 |           break;
 41 |         case TransitionType.size:
 42 |           return Align(
 43 |             child: SizeTransition(
 44 |               sizeFactor: animation, //CurvedAnimation(parent: animation, curve: curve, reverseCurve: reverseCurve),
 45 |               child: child,
 46 |             ),
 47 |           );
 48 |           break;
 49 |         case TransitionType.scale:
 50 |           return ScaleTransition(
 51 |             scale: animation,
 52 |             alignment: Alignment.topRight,
 53 |             child: child,
 54 |           );
 55 |           break;
 56 |         case TransitionType.fade:
 57 |           return FadeTransition(
 58 |             opacity: animation,
 59 |             child: child,
 60 |           );
 61 |           break;
 62 |         case TransitionType.rotate:
 63 |           return RotationTransition(
 64 |             alignment: Alignment.center,
 65 |             turns: animation,
 66 |             child: ScaleTransition(
 67 |               alignment: Alignment.center,
 68 |               scale: animation,
 69 |               child: FadeTransition(
 70 |                 opacity: animation,
 71 |                 child: child,
 72 |               ),
 73 |             ),
 74 |           );
 75 |           break;
 76 |         // SlideTransition position is an Animation not Animation
 77 |         // Use Tween().animate(animation)
 78 |         case TransitionType.slideDown:
 79 |           return SlideTransition(
 80 |             position: Tween(
 81 |               begin: const Offset(0.0, -1.0),
 82 |               end: const Offset(0.0, 0.0),
 83 |             ).animate(animation),
 84 |             child: child,
 85 |           );
 86 |           break;
 87 |         case TransitionType.slideUp:
 88 |           return SlideTransition(
 89 |             position: Tween(
 90 |               begin: const Offset(0.0, 1.0),
 91 |               end: const Offset(0.0, 0.0),
 92 |             ).animate(animation),
 93 |             //).animate(CurvedAnimation(parent: animation, curve: curve, reverseCurve: reverseCurve)),
 94 |             child: child,
 95 |           );
 96 |           break;
 97 |         case TransitionType.slideLeft:
 98 |           return SlideTransition(
 99 |             position: Tween(
100 |               begin: const Offset(1.0, 0.0),
101 |               end: const Offset(0.0, 0.0),
102 |             ).animate(animation),
103 |             //).animate(CurvedAnimation(parent: animation,curve: curve, reverseCurve: reverseCurve)),
104 |             child: child,
105 |           );
106 |           break;
107 |         case TransitionType.slideRight:
108 |           return SlideTransition(
109 |             position: Tween(
110 |               begin: const Offset(-1.0, 0.0),
111 |               end: const Offset(0.0, 0.0),
112 |             ).animate(animation),
113 |             child: child,
114 |           );
115 |           break;
116 |         default:
117 |           return FadeTransition(opacity: animation, child: child);
118 |       }
119 |     },
120 |   );
121 | }
122 | 
123 | class SizeTransitionRoute extends PageRouteBuilder {
124 |   final Widget widget;
125 | 
126 |   SizeTransitionRoute({this.widget}) : super(
127 |     transitionDuration: Duration(milliseconds: 1000),
128 |       pageBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation) {
129 |         return widget;
130 |       },
131 |       transitionsBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) {
132 |         return Align(
133 |           child: SizeTransition(
134 |             sizeFactor: animation, // CurvedAnimation(parent: animation, curve: Curves.elasticInOut);
135 |             child: child,
136 |           ),
137 |         );
138 |       },
139 |   );
140 | }
141 | 
142 | class ScaleTransitionRoute extends PageRouteBuilder {
143 |   final Widget widget;
144 | 
145 |   ScaleTransitionRoute({this.widget}) : super(
146 |     transitionDuration: Duration(milliseconds: 1000),
147 |     pageBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation) {
148 |       return widget;
149 |     },
150 |     transitionsBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) {
151 |       animation = CurvedAnimation(parent: animation, curve: Curves.elasticInOut);
152 |       return ScaleTransition(
153 |         scale: animation,
154 |         alignment: Alignment.topRight,
155 |         child: child,
156 |       );
157 |     },
158 |   );
159 | }
160 | 
161 | class FadeTransitionRoute extends PageRouteBuilder {
162 |   final Widget widget;
163 | 
164 |   FadeTransitionRoute({this.widget}) : super(
165 |     transitionDuration: Duration(milliseconds: 1000),
166 |     pageBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation) {
167 |       return widget;
168 |     },
169 |     transitionsBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) {
170 |       animation = CurvedAnimation(parent: animation, curve: Curves.elasticInOut);
171 |       return FadeTransition(
172 |         opacity: animation,
173 |         child: child,
174 |       );
175 |     },
176 |   );
177 | }
178 | 
179 | class SlideUpRoute extends PageRouteBuilder {
180 |   final Widget widget;
181 | 
182 |   SlideUpRoute({this.widget}) : super(
183 |     transitionDuration: Duration(milliseconds: 1000),
184 |     pageBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation) {
185 |       return widget;
186 |     },
187 |     transitionsBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) {
188 |       animation = CurvedAnimation(parent: animation, curve: Curves.elasticInOut);
189 |       return SlideTransition(
190 |         position: Tween(
191 |           begin: const Offset(0.0, 1.0),
192 |           end: const Offset(0.0, 0.0),
193 |         ).animate(animation),
194 |         //).animate(CurvedAnimation(parent: animation, curve: Curves.elasticInOut)),
195 |         child: child,
196 |       );
197 |     },
198 |   );
199 | }
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
 1 | import 'package:flutter/material.dart';
 2 | import 'package:pagenavigator/pages/home.dart';
 3 | 
 4 | void main() => runApp(MyApp());
 5 | 
 6 | class MyApp extends StatelessWidget {
 7 |   // This widget is the root of your application.
 8 |   @override
 9 |   Widget build(BuildContext context) {
10 |     return MaterialApp(
11 |       debugShowCheckedModeBanner: false,
12 |       title: 'Navigator',
13 |       theme: ThemeData(
14 |         primarySwatch: Colors.lightGreen,
15 |       ),
16 |       home: Home(),
17 |     );
18 |   }
19 | }
--------------------------------------------------------------------------------
/lib/pages/details.dart:
--------------------------------------------------------------------------------
 1 | import 'package:flutter/material.dart';
 2 | 
 3 | class Details extends StatefulWidget {
 4 |   final String routeType;
 5 | 
 6 |   const Details({Key key, this.routeType}) : super(key: key);
 7 | 
 8 |   @override
 9 |   _DetailsState createState() => _DetailsState();
10 | }
11 | 
12 | class _DetailsState extends State {
13 |   TextEditingController _textEditingController = TextEditingController();
14 | 
15 |   @override
16 |   void initState() {
17 |     super.initState();
18 | 
19 |     _textEditingController.text = widget.routeType;
20 |   }
21 | 
22 |   @override
23 |   void dispose() {
24 |     _textEditingController.dispose();
25 | 
26 |     super.dispose();
27 |   }
28 | 
29 |   @override
30 |   Widget build(BuildContext context) {
31 |     return Scaffold(
32 |       backgroundColor: Colors.lightGreen.shade200,
33 |       appBar: AppBar(
34 |         title: Text('Details'),
35 |       ),
36 |       body: Padding(
37 |         padding: const EdgeInsets.all(24.0),
38 |         child: TextField(
39 |           controller: _textEditingController,
40 |           onSubmitted: (String value) {
41 |             Navigator.of(context).pop(value);
42 |           },
43 |         ),
44 |       ),
45 |     );
46 |   }
47 | }
48 | 
--------------------------------------------------------------------------------
/lib/pages/home.dart:
--------------------------------------------------------------------------------
  1 | import 'package:flutter/material.dart';
  2 | import 'details.dart';
  3 | import 'package:pagenavigator/classes/transitions.dart';
  4 | 
  5 | class Home extends StatefulWidget {
  6 |   @override
  7 |   _HomeState createState() => _HomeState();
  8 | }
  9 | 
 10 | class RouteTransitionType {
 11 |   String title;
 12 |   TransitionType transitionType;
 13 | 
 14 |   RouteTransitionType({this.title, this.transitionType});
 15 | }
 16 | 
 17 | class _HomeState extends State {
 18 |   List _routeTransitionTypeList = List();
 19 | 
 20 |   @override
 21 |   void initState() {
 22 |     super.initState();
 23 | 
 24 |     _routeTransitionTypeList
 25 |     ..add(RouteTransitionType(title: 'Default', transitionType: TransitionType.defaultTransition))
 26 |     ..add(RouteTransitionType(title: 'No Transition', transitionType: TransitionType.none))
 27 |     ..add(RouteTransitionType(title: 'Size Transition', transitionType: TransitionType.size))
 28 |     ..add(RouteTransitionType(title: 'Scale Transition', transitionType: TransitionType.scale))
 29 |     ..add(RouteTransitionType(title: 'Fade Transition', transitionType: TransitionType.fade))
 30 |     ..add(RouteTransitionType(title: 'Rotate Transition', transitionType: TransitionType.rotate))
 31 |     ..add(RouteTransitionType(title: 'Slide Up Transition', transitionType: TransitionType.slideUp))
 32 |     ..add(RouteTransitionType(title: 'Slide Down Transition', transitionType: TransitionType.slideDown))
 33 |     ..add(RouteTransitionType(title: 'Slide Left Transition', transitionType: TransitionType.slideLeft))
 34 |     ..add(RouteTransitionType(title: 'Slide Right Transition', transitionType: TransitionType.slideRight));
 35 |   }
 36 | 
 37 |   @override
 38 |   Widget build(BuildContext context) {
 39 |     return Scaffold(
 40 |       backgroundColor: Colors.lightGreen.shade50,
 41 |       appBar: AppBar(
 42 |         title: Text('Navigator - Transitions'),
 43 |       ),
 44 |       body: SafeArea(
 45 |         child: ListView.builder(
 46 |           itemCount: _routeTransitionTypeList.length,
 47 |           itemBuilder: (BuildContext context, int index) {
 48 |             return Card(
 49 |               child: ListTile(
 50 |                 title: Text(_routeTransitionTypeList[index].title),
 51 |                 onTap: () {
 52 |                   // MaterialPageRoute
 53 | //                  Navigator.of(context).push(
 54 | //                    MaterialPageRoute(
 55 | //                        builder: (BuildContext context) => Details(routeType: _routeTransitionTypeList[index].title)
 56 | //                    ),
 57 | //                  ).then((editedValue) {
 58 | //                    if (editedValue != null) _routeTransitionTypeList[index].title = editedValue;
 59 | //                  });
 60 | 
 61 |                   // PageRouteBuilder
 62 | //                Navigator.of(context).push(
 63 | //                  PageRouteBuilder(
 64 | //                    pageBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation) {
 65 | //                      return Details(routeType: _routeTransitionTypeList[index].title);
 66 | //                    },
 67 | //                    transitionsBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) {
 68 | //                      return Align(
 69 | //                        child: SizeTransition(
 70 | //                          sizeFactor: animation, // CurvedAnimation(parent: animation, curve: Curves.elasticInOut),
 71 | //                          child: child,
 72 | //                        ),
 73 | //                      );
 74 | //                    },
 75 | //                    transitionDuration: Duration(milliseconds: 500),
 76 | //                  ),
 77 | //                ).then((editedValue) {
 78 | //                  if (editedValue != null) _routeTransitionTypeList[index].title = editedValue;
 79 | //                });
 80 | 
 81 |                   // PageRouteBuilder Class
 82 | //                Navigator.of(context).push(
 83 | //                    SizeTransitionRoute(
 84 | //                        widget: Details(routeType: _routeTransitionTypeList[index].title))).then((editedValue) {
 85 | //                  if (editedValue != null) _routeTransitionTypeList[index].title = editedValue;
 86 | //                });
 87 | 
 88 |                   // Transition Class to handle multiple Animation Transitions
 89 |                   if (_routeTransitionTypeList[index].transitionType == TransitionType.defaultTransition) {
 90 |                     Navigator.of(context).push(
 91 |                       MaterialPageRoute(
 92 |                           builder: (BuildContext context) => Details(routeType: _routeTransitionTypeList[index].title)
 93 |                       ),
 94 |                     ).then((editedValue) {
 95 |                       if (editedValue != null) _routeTransitionTypeList[index].title = editedValue;
 96 |                     });
 97 |                   }
 98 |                   else {
 99 |                     Navigator.of(context).push(
100 |                       Transitions(
101 |                           transitionType: _routeTransitionTypeList[index].transitionType,
102 |                           duration: Duration(milliseconds: 500),
103 |                           curve: Curves.bounceInOut,
104 |                           reverseCurve: Curves.fastOutSlowIn,
105 |                           widget: Details(routeType: _routeTransitionTypeList[index].title)
106 |                       ),
107 |                     ).then((editedValue) {
108 |                       if (editedValue != null) _routeTransitionTypeList[index].title = editedValue;
109 |                     });
110 |                     //print('ModalRoute: ${ModalRoute.of(context).animation}');
111 |                   }
112 | 
113 |                 },
114 |               ),
115 |             );
116 |           },
117 |         ),
118 |       ),
119 |     );
120 |   }
121 | }
122 | 
--------------------------------------------------------------------------------
/pagenavigator.iml:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 |   
 4 |     
 6 |        
13 |      
18 |  
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
 1 | name: pagenavigator
 2 | description: Navigator and Transitions.
 3 | 
 4 | # The following defines the version and build number for your application.
 5 | # A version number is three numbers separated by dots, like 1.2.43
 6 | # followed by an optional build number separated by a +.
 7 | # Both the version and the builder number may be overridden in flutter
 8 | # build by specifying --build-name and --build-number, respectively.
 9 | # In Android, build-name is used as versionName while build-number used as versionCode.
10 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning
11 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
12 | # Read more about iOS versioning at
13 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
14 | version: 1.0.0+1
15 | 
16 | environment:
17 |   sdk: ">=2.1.0 <3.0.0"
18 | 
19 | dependencies:
20 |   flutter:
21 |     sdk: flutter
22 | 
23 |   # The following adds the Cupertino Icons font to your application.
24 |   # Use with the CupertinoIcons class for iOS style icons.
25 |   cupertino_icons: ^0.1.2
26 | 
27 | dev_dependencies:
28 |   flutter_test:
29 |     sdk: flutter
30 | 
31 | 
32 | # For information on the generic Dart part of this file, see the
33 | # following page: https://dart.dev/tools/pub/pubspec
34 | 
35 | # The following section is specific to Flutter.
36 | flutter:
37 | 
38 |   # The following line ensures that the Material Icons font is
39 |   # included with your application, so that you can use the icons in
40 |   # the material Icons class.
41 |   uses-material-design: true
42 | 
43 |   # To add assets to your application, add an assets section, like this:
44 |   # assets:
45 |   #  - images/a_dot_burr.jpeg
46 |   #  - images/a_dot_ham.jpeg
47 | 
48 |   # An image asset can refer to one or more resolution-specific "variants", see
49 |   # https://flutter.dev/assets-and-images/#resolution-aware.
50 | 
51 |   # For details regarding adding assets from package dependencies, see
52 |   # https://flutter.dev/assets-and-images/#from-packages
53 | 
54 |   # To add custom fonts to your application, add a fonts section here,
55 |   # in this "flutter" section. Each entry in this list should have a
56 |   # "family" key with the font family name, and a "fonts" key with a
57 |   # list giving the asset and other descriptors for the font. For
58 |   # example:
59 |   # fonts:
60 |   #   - family: Schyler
61 |   #     fonts:
62 |   #       - asset: fonts/Schyler-Regular.ttf
63 |   #       - asset: fonts/Schyler-Italic.ttf
64 |   #         style: italic
65 |   #   - family: Trajan Pro
66 |   #     fonts:
67 |   #       - asset: fonts/TrajanPro.ttf
68 |   #       - asset: fonts/TrajanPro_Bold.ttf
69 |   #         weight: 700
70 |   #
71 |   # For details regarding fonts from package dependencies,
72 |   # see https://flutter.dev/custom-fonts/#from-packages
73 | 
--------------------------------------------------------------------------------
/readmeassets/navigator-transitions-ios.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JediPixels/page_navigator/784a0daac5d4f66fea5648e70ab6c1bc60edd7c8/readmeassets/navigator-transitions-ios.gif
--------------------------------------------------------------------------------
/test/widget_test.dart:
--------------------------------------------------------------------------------
 1 | // This is a basic Flutter widget test.
 2 | //
 3 | // To perform an interaction with a widget in your test, use the WidgetTester
 4 | // utility that Flutter provides. For example, you can send tap and scroll
 5 | // gestures. You can also use WidgetTester to find child widgets in the widget
 6 | // tree, read text, and verify that the values of widget properties are correct.
 7 | 
 8 | import 'package:flutter/material.dart';
 9 | import 'package:flutter_test/flutter_test.dart';
10 | 
11 | import 'package:pagenavigator/main.dart';
12 | 
13 | void main() {
14 |   testWidgets('Counter increments smoke test', (WidgetTester tester) async {
15 |     // Build our app and trigger a frame.
16 |     await tester.pumpWidget(MyApp());
17 | 
18 |     // Verify that our counter starts at 0.
19 |     expect(find.text('0'), findsOneWidget);
20 |     expect(find.text('1'), findsNothing);
21 | 
22 |     // Tap the '+' icon and trigger a frame.
23 |     await tester.tap(find.byIcon(Icons.add));
24 |     await tester.pump();
25 | 
26 |     // Verify that our counter has incremented.
27 |     expect(find.text('0'), findsNothing);
28 |     expect(find.text('1'), findsOneWidget);
29 |   });
30 | }
31 | 
--------------------------------------------------------------------------------