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

时间:2019-07-26 08:59:26

标签: android flutter timer static

我正在尝试在我的代码中调用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}'
        )
      ];
    });
  }

1 个答案:

答案 0 :(得分:0)

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

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

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

实例在哪里

final instance = new ClassThatHasPlayRefreshBar();

或者,您需要将实例方法设置为静态

static void playRefreshBar()