如何从 StatelessWidget 中的 StatefulWidget 访问变量?
How do I access an variable from a StatefulWidget inside an StatelessWidget?
如何从这个 statefulWidget 访问变量“selectedTag”:
class _AlertDialogOneState extends State<AlertDialogOne> {
Item selectedTag;
...
}
}
在这个 statelessWidget 中:
class CardTile extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(...
将其作为参数传递,
class CardTile extends StatelessWidget {
final Item selectedTag;// Add this
CardTile(this.selectedTag); // Add this
@override
Widget build(BuildContext context) {
return Container(...
要传递这个变量,你有多种方式:
- 当您使用导航器
导航到此 class 时,将其作为构造函数传递
Navigator.push(
context,
MaterialPageRoute(builder: (context) => CardTile(selectedTag)),
);
class CardTile extends StatelessWidget {
Item selectedTag;
CardTile(this.selectedTag);
@override
Widget build(BuildContext context) {
return Container(...
- 使用像提供者这样的状态管理
class ProviderData with ChangeNotifier {
Item selected;
void changeSelection(newSelect) {
selected = newSelect;
changeNotifier();
}
}
在任何 class 中你需要这样调用:
final providerData = Provider.of<ProviderData>(context);
因此您可以像这样使用此实例访问变量或更改它:
final variable = providerData.selected;
providerData.changeSelection(newValue);
print(variable);
希望这对您有所帮助,但我发现如果您不使用状态管理,最好通过构造函数传递它,但是我只是给您举了一个例子来说明
如何从这个 statefulWidget 访问变量“selectedTag”:
class _AlertDialogOneState extends State<AlertDialogOne> {
Item selectedTag;
...
}
}
在这个 statelessWidget 中:
class CardTile extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(...
将其作为参数传递,
class CardTile extends StatelessWidget {
final Item selectedTag;// Add this
CardTile(this.selectedTag); // Add this
@override
Widget build(BuildContext context) {
return Container(...
要传递这个变量,你有多种方式:
- 当您使用导航器 导航到此 class 时,将其作为构造函数传递
Navigator.push(
context,
MaterialPageRoute(builder: (context) => CardTile(selectedTag)),
);
class CardTile extends StatelessWidget {
Item selectedTag;
CardTile(this.selectedTag);
@override
Widget build(BuildContext context) {
return Container(...
- 使用像提供者这样的状态管理
class ProviderData with ChangeNotifier {
Item selected;
void changeSelection(newSelect) {
selected = newSelect;
changeNotifier();
}
}
在任何 class 中你需要这样调用:
final providerData = Provider.of<ProviderData>(context);
因此您可以像这样使用此实例访问变量或更改它:
final variable = providerData.selected;
providerData.changeSelection(newValue);
print(variable);
希望这对您有所帮助,但我发现如果您不使用状态管理,最好通过构造函数传递它,但是我只是给您举了一个例子来说明