父子组件之间的传值
父组件
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Test",
home: Scaffold(
appBar: AppBar(
title: Text("Test"),
),
body: MyText(
str1: "传递的值", //向自定义的MyText类传值,格式:参数名称:参数值
),
),
);
}
}
class MyText extends StatelessWidget {
const MyText({Key key,@required this.str1}) : super(key: key); //接收传递过来的值,使用@required修饰,表示为必传参数
final String str1; //定义接收参数
@override
Widget build(BuildContext context) {
return Text(str1);
}
}
页面导航打开新页面和返回新页面
import 'package:flutter/material.dart';
void main(){
runApp(
MaterialApp(
title: "导航演示",
home: FirstScreen(),
)
);
}
class FirstScreen extends StatelessWidget {
const FirstScreen({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: Scaffold(
appBar: AppBar(title: Text("页面一"),),
body: Center(
child: RaisedButton(
onPressed: (){
Navigator.push(context, MaterialPageRoute(
builder: (context) => SecondScreen()
)); //第一个参数是上下文,第二个参数是路由参数
},
child: Text("打开新视图"),
),
),
)
);
}
}
class SecondScreen extends StatelessWidget {
const SecondScreen({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("页面二"),),
body: Center(
child: RaisedButton(
child: Text("返回"),
onPressed: (){
Navigator.pop(context);
},
),
),
);
}
}
导航之间的传值
import 'package:flutter/material.dart