Widget build(BuildContext context) {
return Container(
child: RaisedButton(
child: Text('push'),
onPressed: () => Navigator.of(context).push(MaterialPageRoute(
builder: (content) {
return deee(str: 'demo');
},
)),
),
);
}
class deee extends StatelessWidget {
final Sting str;
//带参数的组件初始化方式
const _ListTodoDetail({Key key,@required this.str}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title:Text('${this.str}'),
),
);
}
}
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
child: Text('push'),
//pop回来的值类型为Future,必须使用await来获取,而await必须在async异步线程中使用
onPressed: () async {
Future va = await Navigator.of(context).push(MaterialPageRoute(
builder: (context) => _PopPage()
));
//输出:we are coming'
print('$va');
}),));
}
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title:Text('pop'),
),
body: Center(
child: Center(
child: RaisedButton(
child: Text('pop'),
onPressed: () => Navigator.of(context).pop('we are coming'),
),)));
}
return MaterialApp(
title: 'Demo',
routes: {
'/back': (context) => Navigator.of(context).pop(),
}
)
//任意位置调用:
Navigator.pushNamed(context, '/back');
Navigator(
key: _navigatorKey,
initialRoute: 'signup/username',
onGenerateRoute: (settings) {
WidgetBuilder builder;
switch (settings.name) {
case 'signup/username':
builder = (_) => _UsernamePage();
break;
case 'signup/password':
builder = (_) => _PasswordPage();
break;
);
}
return MaterialPageRoute(builder: builder, settings: settings);
},
)
//在当前navigation下任意位置调用:
Navigator.of(context).pushNamed('signup/password')