如何从 StatelessWidget 中的 StatefulWidget 访问变量?
Posted
技术标签:
【中文标题】如何从 StatelessWidget 中的 StatefulWidget 访问变量?【英文标题】:How do I access an variable from a StatefulWidget inside an StatelessWidget? 【发布时间】:2021-05-16 15:26:52 【问题描述】:如何从这个 statefulWidget 访问变量“selectedTag”:
class _AlertDialogOneState extends State<AlertDialogOne>
Item selectedTag;
...
在这个 statelessWidget 内:
class CardTile extends StatelessWidget
@override
Widget build(BuildContext context)
return Container(...
【问题讨论】:
【参考方案1】:将其作为参数传递,
class CardTile extends StatelessWidget
final Item selectedTag;// Add this
CardTile(this.selectedTag); // Add this
@override
Widget build(BuildContext context)
return Container(...
【讨论】:
【参考方案2】:要传递这个变量,你有多种方法:
当您使用导航器导航到此类时,将其作为构造函数传递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();
在你需要的任何类中调用这个:
final providerData = Provider.of<ProviderData>(context);
因此您可以使用此实例访问变量或更改它,如下所示:
final variable = providerData.selected;
providerData.changeSelection(newValue);
print(variable);
希望对您有所帮助,但我发现如果您不使用状态管理器,最好通过构造函数传递它,但是我只是给您举了一个示例来说明
【讨论】:
以上是关于如何从 StatelessWidget 中的 StatefulWidget 访问变量?的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:如何将变量从 StatelessWidget 传递到 StatefulWidget
如何在 StatelessWidget 的任何函数中获取上下文?
如何在 StatelessWidget 中更改 StatefulWidget 的状态?
Flutter中StatelessWidget调用StatefulWidget的函数