无法使用静态访问访问 Flutter 实例成员“{0}”

Mar*_*ark 17 static instance dart flutter

我在flutter中将变量从一个活动传递到另一个活动,但收到错误“无法使用静态访问访问实例成员'纬度'”我需要在该块中转换它,以便我可以将其分配给静态URL。

class Xsecond extends StatefulWidget {
  final double latitude;
  final double longitude;
  Xsecond(this.latitude, this.longitude, {Key key}): super(key: key);

  @override
  _Xsecond createState() => _Xsecond();
}

class _Xsecond extends State<Xsecond> {
  static String lat = Xsecond.latitude.toString(); // Error: Instance member ‘latitude’ can’t be accessed using static access
  ...
Run Code Online (Sandbox Code Playgroud)

其次是

  ...
  String url = 'https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=${lat},$lng&radius=$radius&type=restaurant&key=$api';
  ...
Run Code Online (Sandbox Code Playgroud)

Sis*_*sir 13

在您的代码中,纬度和经度都被定义为非静态的,即实例变量。这意味着它们只能使用类实例调用。

class _Xsecond extends State<Xsecond> {
      final xsecond = Xsecond();
      static String lat = xsecond.latitude.toString();
      ...
Run Code Online (Sandbox Code Playgroud)

请阅读任何面向对象编程语言的基础知识,例如 Dart、java、C++

但是,在您的上下文中,第一类是您的 StatefullWidget。因此,您可以通过widget状态类的字段访问它。

使固定:

class _Xsecond extends State<Xsecond> {
          static String lat = widget.latitude.toString();
          ...
Run Code Online (Sandbox Code Playgroud)

  • 哈,同样的想法!任何相当于“请阅读手册”的内容都可以附加到任何响应中,并使整个网站变得毫无用处。更有用的回复指出有帮助的文档。作为一名新开发人员,我经常会花费大量时间四处寻找文档,但没有成功,因为 a) 我不知道如何阐明我的问题(适当搜索),b) 知道所有十亿资源中的哪一个这是有用的,和/或 c) 手册本质上技术性太强,或者期望我还没有的基础知识的另一个基础层。 (4认同)
  • @Sisir“请阅读任何面向对象编程语言的基础知识,例如 Dart、java、C++”——真的吗?你必须这么说吗? (3认同)