0

如何从此 statefulWidget 访问变量“selectedTag”:

class _AlertDialogOneState extends State<AlertDialogOne> {
  Item selectedTag;
...
  }
}

在这个 statelessWidget 里面:

class CardTile extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(...
4

2 回答 2

1

将其作为参数传递,

class CardTile extends StatelessWidget {
  final Item selectedTag;// Add this
  CardTile(this.selectedTag); // Add this

  @override
  Widget build(BuildContext context) {
    return Container(...
于 2021-02-12T22:05:27.587 回答
0

要传递此变量,您有多种方法:

  • 当您使用导航器导航到此类时,将其作为构造函数传递
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);

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

于 2021-02-12T22:46:01.723 回答