【问题标题】:How do I access an variable from a StatefulWidget inside an StatelessWidget?如何从 StatelessWidget 中的 StatefulWidget 访问变量?
【发布时间】: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(...

【问题讨论】:

    标签: flutter dart flutter-widget statefulwidget statelesswidget


    【解决方案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);
      

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

      【讨论】:

        猜你喜欢
        • 2019-08-25
        • 2020-05-12
        • 1970-01-01
        • 2020-10-30
        • 1970-01-01
        • 2019-03-26
        • 1970-01-01
        • 2020-04-06
        • 1970-01-01
        相关资源
        最近更新 更多