解决Only static members can be accessed in initializers问题

如下所示代码,我想在_MyHomePageState中创建一个Text成员变通,通过_getText()方法获取text显示的文本内容

但是在Text(_getText())处却报Only static members can be accessed in initializers错误

class _MyHomePageState extends State<MyHomePage> {

  Text text = Text(_getText());

  String _getText() {
    return '野猿新一';
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: text, // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

方法一

根据报错提示的字面意思大概是说在构造函数内只能调用static静态方法

那我们就把_getText()改成static方法试下,结果果真不报错了

static String _getText() {
  return '野猿新一';
}

方法二

第二种方法就是Text在使用的时候再创建,而不是在_MyHomePageState对象创建的时候就创建

如下代码也可以解决问题

class _MyHomePageState extends State<MyHomePage> {

  String _getText() {
    return '野猿新二';
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Text(_getText()), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

 

posted @ 2019-10-30 15:51  野猿新一  阅读(66)  评论(0编辑  收藏  举报