繁体   English   中英

无法从静态方法Flutter访问实例成员

[英]Instance members can't be accessed from a static method Flutter

我试图在我的代码中调用playRefreshBar ,但是我得到这样的警告

实例成员不能从静态方法访问

这是我的静态代码

  static List<charts.Series<Spending, String>> createRandomData(){
    Timer(Duration(milliseconds:1000),(){
      playRefreshBar();
    });
  }

代码playRefreshBar

  void playRefreshBar() {
    timer = Timer.periodic(Duration(milliseconds: refreshTime), (Timer t){
      final random = new Random();

      final data = [
        new Spending('2013', random.nextInt(1000000)),
        new Spending('2014', random.nextInt(1000000)),
        new Spending('2015', random.nextInt(1000000)),
        new Spending('2016', random.nextInt(1000000)),
        new Spending('2017', random.nextInt(1000000)),
        new Spending('2018', random.nextInt(1000000)),
        new Spending('2019', random.nextInt(1000000)),
      ];

      return[
        new charts.Series(id: 'Spending',
            data: data,
            domainFn: (Spending sp, _) => sp.year,
            measureFn: (Spending sp , _) => sp.spending,
            labelAccessorFn: (Spending sp, _) => '${sp.year}: \$${sp.spending}'
        )
      ];
    });
  }

静态方法无法调用实例方法的原因是因为不包括您要使用的实例。

由于可以创建将要使用该实例方法的任意数量的实例对象,因此静态(单个全局方法)需要知道要引用的实例对象。

static List<charts.Series<Spending, String>> createRandomData(){
 Timer(Duration(milliseconds:1000),(){
   instance.playRefreshBar();
 });
}

实例在哪里

final instance = new ClassThatHasPlayRefreshBar();

或者,您将需要使实例方法也变为静态

static void playRefreshBar()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM