【问题标题】:The instance member 'key' can't be accessed in an initializer无法在初始化程序中访问实例成员 \'key\'
【发布时间】:2022-11-16 15:18:33
【问题描述】:

所以基本上我得到一个错误说无法在初始化程序中访问实例成员“key”。 尝试用不同的表达式替换对实例成员的引用当我尝试制作 StatefulWidget 时,如下所示

class UserPage extends StatefulWidget {
  UserData userData;
  UserPage(this.userData) : super(key: key);
  @override
  State<StatefulWidget> createState() => new _UserPageState(userData);
}

这个有什么解决办法吗? 我试图在每一点添加“迟到”,但它似乎不起作用。

【问题讨论】:

  • 您的 UserPage 构造函数尝试以 key 作为参数调用超类构造函数。但是,您希望key 来自哪里?从基类本身?您的 UserPage 构造函数应该有自己的 key 参数,以便它可以转发它。
  • @jamesdlin 实际上是我第一次使用 flutter,我不太明白你在说什么,但是如果你说的参数是 key,也许是这个? MaterialPageRoute(builder: (context) =&gt; UserPage(userData),),

标签: flutter dart widget


【解决方案1】:

你应该这样做:

class UserPage extends StatefulWidget {
  const UserPage({required this.userData, Key? key}) : super(key: key);

  final UserData userData;

  @override
  State<UserPage> createState() => _UserPageState();
}

【讨论】:

    【解决方案2】:

    key 参数并不总是必需的。所以你可以删除super部分。

    class UserPage extends StatefulWidget {
      UserData userData;
      UserPage(this.userData);
      @override
      State<StatefulWidget> createState() => new _UserPageState(userData);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-12-12
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 2021-07-04
      相关资源
      最近更新 更多