【问题标题】:Instance members can't be accessed from a static method Flutter无法从静态方法 Flutter 访问实例成员
【发布时间】:2019-07-26 08:59:26
【问题描述】:

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

【问题讨论】:

    标签: android flutter timer static


    【解决方案1】:

    静态方法不能调用实例方法是因为没有包含你要使用的实例。

    由于您可以创建任意数量的实例对象来使用实例方法,因此静态(单个全局方法)需要知道您指的是哪一个。

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

    实例在哪里

    final instance = new ClassThatHasPlayRefreshBar();
    

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

    static void playRefreshBar()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-22
      • 2020-01-03
      • 1970-01-01
      • 2021-08-09
      • 2020-11-29
      • 2019-06-22
      • 2021-08-19
      • 2021-11-26
      相关资源
      最近更新 更多