如何从父窗口小部件更改一个子窗口小部件的状态,其中子窗口小部件在单独的文件中是单独的 class?
How to change state of one child widget from parent widget where the child is a separate class in a separate file?
如何通过单击 RaisedButton 将框的颜色从蓝色更改为绿色?我正在使用 Flutter 网页版。
class _MyAppState extends State<MyApp> {
Color colorOfBox = Colors.blue;
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "App",
home: Scaffold(
body: Container(
padding: EdgeInsets.all(50),
child: Center(
child: Column(
children: <Widget>[
Text("This blue has to change to green."),
Box(colorOfBox),
RaisedButton(
color: Colors.red,
onPressed: () {
setState(() {
colorOfBox = Colors.green;
});
},
),
],
),
),
),
),
);
}
}
class Box extends StatefulWidget {
Color c;
Box(this.c, {Key key}) : super(key: key);
@override
_BoxState createState() => _BoxState(c);
}
class _BoxState extends State<Box> {
Color c;
_BoxState(this.c);
@override
Widget build(BuildContext context) {
return Container(
width: 40,
height: 40,
color: c,
);
}
}
从 _BoxState
中删除 Color c
class Box extends StatefulWidget {
Color c;
Box(this.c, {Key key}) : super(key: key);
@override
_BoxState createState() => _BoxState();
}
class _BoxState extends State<Box> {
@override
Widget build(BuildContext context) {
return Container(
width: 40,
height: 40,
color: widget.c,
);
}
}
如何通过单击 RaisedButton 将框的颜色从蓝色更改为绿色?我正在使用 Flutter 网页版。
class _MyAppState extends State<MyApp> {
Color colorOfBox = Colors.blue;
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "App",
home: Scaffold(
body: Container(
padding: EdgeInsets.all(50),
child: Center(
child: Column(
children: <Widget>[
Text("This blue has to change to green."),
Box(colorOfBox),
RaisedButton(
color: Colors.red,
onPressed: () {
setState(() {
colorOfBox = Colors.green;
});
},
),
],
),
),
),
),
);
}
}
class Box extends StatefulWidget {
Color c;
Box(this.c, {Key key}) : super(key: key);
@override
_BoxState createState() => _BoxState(c);
}
class _BoxState extends State<Box> {
Color c;
_BoxState(this.c);
@override
Widget build(BuildContext context) {
return Container(
width: 40,
height: 40,
color: c,
);
}
}
从 _BoxState
Color c
class Box extends StatefulWidget {
Color c;
Box(this.c, {Key key}) : super(key: key);
@override
_BoxState createState() => _BoxState();
}
class _BoxState extends State<Box> {
@override
Widget build(BuildContext context) {
return Container(
width: 40,
height: 40,
color: widget.c,
);
}
}