[英]Flutter changing State of a Widget from another Page
我的问题简而言之:我将尝试从另一个小部件更改一个小部件的 state。
长:
我有一个页面。
此页面显示了一个彩色容器
从另一页来看,这个彩色容器应该改变它的颜色
我将不胜感激任何帮助
import 'package:flutter/material.dart';
class Display extends StatefulWidget {
Display({Key? key, required this.color}) : super(key: key);
Color color;
@override
State<StatefulWidget> createState() => DisplayState();
}
class DisplayState extends State<Display> {
@override
Widget build(BuildContext context) {
return Container(
color: widget.color,
);
}
changeColor(Color color) {
setState(() {
widget.color = color;
});
}
}
我不知道我是否理解正确你想要什么,但如果我是对的你可以这样做:
您的第一个屏幕应该有一个变量来保存 Color 值
Color containerColor;
一个 function 改变它的值
void _setContainerColor(Color newColor) {
setState(() {
containerColor = newColor;
});
}
并在容器中使用变量
Container(
color: containerColor, // your variable state
child: SomeWidget(),
);
将您的 function 作为参数传递给您的第二页
MyOtherWidget(_setContainerColor);
在您的其他小部件中,您声明一个 Function 类型的变量来接收您的 function:
const MyOtherWidget(this._setContainerColor) extends StatefulWidget {
final Function _setContainerColor;
@override
_MyOtherWidgetState createState() => _MyOtherWidgetState();
}
class _MyOtherWidgetState extends State<_MyOtherWidget> {
@override
Widget build(BuildContext context) {
return TextButton(
child: Text("Change Color"),
onPressed: () {
widget._setContainerColor(Colors.red);
},
)
}
}
不要忘记将containerColor
用作容器背景颜色的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.