微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 StatelessWidget 内的 StatefulWidget 访问变量?

如何解决如何从 StatelessWidget 内的 StatefulWidget 访问变量?

如何从这个 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(...
,

要传递这个变量,你有多种方式:

  • 当您使用导航器导航到此类时,将其作为构造函数传递
Navigator.push(
context,MaterialPageRoute(builder: (context) => CardTile(selectedTag)),);
    class CardTile extends StatelessWidget {
    Item selectedTag;
    CardTile(this.selectedTag);
    @override
    Widget build(BuildContext context) {
        return Container(...
  • 使用像 provider 这样的状态管理
    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);

希望这会有所帮助,但我发现如果您不使用状态管理,最好通过构造函数传递它,但是我只是给了您一个示例来说明

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。