sailor 0.0.1 sailor: ^0.0.1 copied to clipboard
A Flutter package for easy navigation management.
import 'package:flutter/material.dart';
import 'package:sailor/sailor.dart';
void main() async {
Routes.createRoutes();
runApp(App());
}
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Compass Example',
home: Home(),
onGenerateRoute: Routes.sailor.generator(),
);
}
}
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Compass Example'),
),
body: Center(
child: RaisedButton(
child: Text('Open New Page'),
onPressed: () async {
final response = await Routes.sailor.navigate<bool>(
context,
"/secondPage",
args: SecondPageArgs('Hey there'),
);
print("Response from SecondPage: $response");
},
),
),
);
}
}
class SecondPageArgs extends BaseArguments {
final String text;
SecondPageArgs(this.text) : assert(text != null);
}
class Fake extends BaseArguments {}
class SecondPage extends StatefulWidget {
@override
_SecondPageState createState() => _SecondPageState();
}
class _SecondPageState extends State<SecondPage> {
@override
Widget build(BuildContext context) {
final args = Sailor.arguments<SecondPageArgs>(context);
return Scaffold(
appBar: AppBar(
title: Text('Compass Example'),
),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text(args?.text ?? 'Second Page'),
RaisedButton(
child: Text('Close Page'),
onPressed: () {
Navigator.of(context).pop(true);
},
),
],
),
),
);
}
}
class Routes {
static final sailor = Sailor();
static void createRoutes() {
sailor
..addRoute(SailorRoute(
name: "/secondPage",
builder: (context, args) {
return SecondPage();
},
));
}
}