1_Navigator
import 'package:flutter/material.dart';
void main() => runApp(
MaterialApp(
initialRoute: '/',
routes: {
'/':(context){return MyApp();},
'/page2':(context){return Page2();}
},
),
);
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('第一页'),),
body: Container(color: Colors.red,),
floatingActionButton: FloatingActionButton(
onPressed: (){
Navigator.pushNamed(context, '/page2');
},
),
);
}
}
class Page2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('第二页'),),
body: Container(color: Colors.black,),
);
}
}
复制代码
2_给新页面传值
import 'package:flutter/material.dart';
void main() => runApp(
MaterialApp(
initialRoute: '/',
routes: {
'/':(context){return MyApp();},
'/page2':(context){return Page2(textData: null,);}
},
),
);
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('第一页'),),
body: Container(color: Colors.red,),
floatingActionButton: FloatingActionButton(
onPressed: (){
Navigator.of(context).push(MaterialPageRoute(
builder: (context){
return Page2(textData: 'abcd',);
}
));
},
),
);
}
}
class Page2 extends StatelessWidget {
final String textData;
Page2({Key key,@required this.textData}):super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('第二页'),),
body: SizedBox.expand(
child: Container(
color: Colors.green,
child: Text(textData),)),
);
}
}
复制代码
3_从新页面返回数据给上一个页面
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: HomeScreen(),
));
}
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('从新页面返回数据给上一个页面'),
),
body: Center(child: SelectionButton()),
);
}
}
class SelectionButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return RaisedButton(
onPressed: () {
_navigateAndDisplaySelection(context);
},
child: Text('点击'),
);
}
_navigateAndDisplaySelection(BuildContext context) async {
final result = await Navigator.push(
context,
MaterialPageRoute(builder: (context) => SelectionScreen()),
);
Scaffold
.of(context)
.showSnackBar(SnackBar(content: Text("$result")));
}
}
class SelectionScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('第二页'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: RaisedButton(
onPressed: () {
Navigator.pop(context, '电压');
},
child: Text('电压'),
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: RaisedButton(
onPressed: () {
Navigator.pop(context, '电流');
},
child: Text('电流'),
),
)
],
),
),
);
}
}
复制代码