mirror of
https://github.com/flutter/samples.git
synced 2025-11-08 22:09:06 +00:00
Rename Navigator 2.0 to Router (#712)
* Rename Navigator 2.0 to Router This aligns better with the documentation for this new API, and doesn't imply that apps need to be upgraded. * introduction -> navigator
This commit is contained in:
61
navigation_and_routing/lib/navigator/anonymous_routes.dart
Normal file
61
navigation_and_routing/lib/navigator/anonymous_routes.dart
Normal file
@@ -0,0 +1,61 @@
|
||||
// Copyright 2020, the Flutter project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
/// Shows how to use [Navigator] APIs to push and pop an anonymous
|
||||
/// route. In this case, it is an instance of [MaterialPageRoute].
|
||||
library anonymous_routes;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
void main() {
|
||||
runApp(Nav2App());
|
||||
}
|
||||
|
||||
class Nav2App extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
home: HomeScreen(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class HomeScreen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(),
|
||||
body: Center(
|
||||
child: TextButton(
|
||||
child: Text('View Details'),
|
||||
onPressed: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) {
|
||||
return DetailScreen();
|
||||
}),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class DetailScreen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(),
|
||||
body: Center(
|
||||
child: TextButton(
|
||||
child: Text('Pop!'),
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
62
navigation_and_routing/lib/navigator/named_routes.dart
Normal file
62
navigation_and_routing/lib/navigator/named_routes.dart
Normal file
@@ -0,0 +1,62 @@
|
||||
// Copyright 2020, the Flutter project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
/// Shows how to use define named routes via the `routes` parameter on
|
||||
/// MaterialApp, and navigate using Navigator.pushNamed.
|
||||
library named_routes;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
void main() {
|
||||
runApp(Nav2App());
|
||||
}
|
||||
|
||||
class Nav2App extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
routes: {
|
||||
'/': (context) => HomeScreen(),
|
||||
'/details': (context) => DetailScreen(),
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class HomeScreen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(),
|
||||
body: Center(
|
||||
child: TextButton(
|
||||
child: Text('View Details'),
|
||||
onPressed: () {
|
||||
Navigator.pushNamed(
|
||||
context,
|
||||
'/details',
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class DetailScreen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(),
|
||||
body: Center(
|
||||
child: TextButton(
|
||||
child: Text('Pop!'),
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
98
navigation_and_routing/lib/navigator/on_generate_route.dart
Normal file
98
navigation_and_routing/lib/navigator/on_generate_route.dart
Normal file
@@ -0,0 +1,98 @@
|
||||
// Copyright 2020, the Flutter project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
/// Shows how to handle arbitrary named routes using the `onGenerateRoute`
|
||||
/// callback defined in the `MaterialApp` constructor.
|
||||
library on_generate_route;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
void main() {
|
||||
runApp(Nav2App());
|
||||
}
|
||||
|
||||
class Nav2App extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
onGenerateRoute: (settings) {
|
||||
// Handle '/'
|
||||
if (settings.name == '/') {
|
||||
return MaterialPageRoute(builder: (context) => HomeScreen());
|
||||
}
|
||||
|
||||
// Handle '/details/:id'
|
||||
var uri = Uri.parse(settings.name);
|
||||
if (uri.pathSegments.length == 2 &&
|
||||
uri.pathSegments.first == 'details') {
|
||||
var id = uri.pathSegments[1];
|
||||
return MaterialPageRoute(builder: (context) => DetailScreen(id: id));
|
||||
}
|
||||
|
||||
return MaterialPageRoute(builder: (context) => UnknownScreen());
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class HomeScreen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(),
|
||||
body: Center(
|
||||
child: TextButton(
|
||||
child: Text('View Details'),
|
||||
onPressed: () {
|
||||
Navigator.pushNamed(
|
||||
context,
|
||||
'/details/1',
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class DetailScreen extends StatelessWidget {
|
||||
final String id;
|
||||
|
||||
DetailScreen({
|
||||
this.id,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(),
|
||||
body: Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text('Viewing details for item $id'),
|
||||
TextButton(
|
||||
child: Text('Pop!'),
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class UnknownScreen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(),
|
||||
body: Center(
|
||||
child: Text('404!'),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user