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

时间:2021-02-12 21:30:34

标签: flutter dart flutter-widget statefulwidget statelesswidget

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

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

在这个 statelessWidget 中:

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

2 个答案:

答案 0 :(得分:1)

将其作为参数传递,

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

  @override
  Widget build(BuildContext context) {
    return Container(...

答案 1 :(得分: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(...
  • 使用像 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);

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